ডিরেক্টরি কাঠামো গ্রাফিকাল ট্রিফিকেশন


9

একটি ধ্রুপদী ডিরেক্টরি কাঠামো এর রূপান্তর করুন:

config.yml
drafts
    begin-with-the-crazy-ideas.textile
    on-simplicity-in-technology.markdown
includes
    footer.html
    header.html

এর মধ্যে

.
├── config.yml
├── drafts
|   ├── begin-with-the-crazy-ideas.textile
|   └── on-simplicity-in-technology.markdown
└── includes
    ├── footer.html
    └── header.html
  • চারটি স্পেস উপরে নীচের একটি নেস্টেড ফোল্ডার বা ফাইল নির্দিষ্ট করে।
  • নেস্টেড বিভাগের স্তরগুলি অনুমোদিত হতে পারে।

হালনাগাদ

  • ফাইলের নামের : বৈধ লিনাক্স স্পেস এবং linefeeds ছাড়া ফাইলগুলির নাম: কোনো বাইট ছাড়া NUL, /এবং spaces,linefeeds
  • চরিত্র অঙ্কন:
    • | উল্লম্ব রেখা (U + 007C)
    • বাক্সের অঙ্কনগুলি হালকা অনুভূমিক (U + 2500)
    • বাক্স অঙ্কন হালকা উল্লম্ব এবং ডান (U + 251C)

বিজয়ী : বাইটসের মধ্যে সংক্ষিপ্ততম কোড জিতেছে!


1
পিপিসিজিতে আপনাকে স্বাগতম! প্রথম প্রথম পোস্ট!
Rɪᴋᴇʀ

উল্লম্ব রেখাগুলি কি \ x7C উল্লম্ব লাইন বা Dra u2502 বাক্স অঙ্কন হালকা উল্লম্ব হবে?
নীল

@ নীল আমি "বক্স অঙ্কন হালকা উল্লম্ব" সম্পর্কে অবগত ছিলাম না, উদাহরণটিতে আমি "উল্লম্ব লাইন" ব্যবহার করেছি এবং এর সাথে ইতিমধ্যে দুটি উত্তর রয়েছে। প্রাক্তনটিকে যেভাবেই হোক ব্যবহার করা আরও বুদ্ধিমান হবে কারণ অন্য দুটি অক্ষর বক্স অঙ্কনের ধরণ, আমি কি প্রশ্নটি update u2502 দিয়ে আপডেট করব?
মার্চানয়

যেহেতু আমি আমার পছন্দ মতো আরপিএলগুলিতে বাক্স অঙ্কন অক্ষরগুলি সহজেই টাইপ করতে পারি না, তাই আমি এল, + এবং - অক্ষরগুলি ব্যবহার করে আমার উত্তরটি লিখেছিলাম এবং তারপরে আপনি স্ক্রিনটি সামঞ্জস্য করে বিশ্বাস করেন যে আপনি জুড়ে বক্স অঙ্কন অক্ষর ব্যবহার করছেন, যদিও আমি আসলে কপি করেছি এবং আপনার প্রশ্ন থেকে চেক না করে আটকানো। যদি উল্লম্ব লাইনটি গ্রহণযোগ্য হয় তবে আমি আমার স্কোর 1 দ্বারা হ্রাস করতে পারতাম
নীল

1
দুর্দান্ত, যেহেতু এটি এখন আমার নতুন উত্তরে আমার 2 বাইট সঞ্চয় করে!
নীল

উত্তর:


2

রেটিনা , 88 বাইট

m`^ *
$&├── 
 {4}
|   
T+`|├` └`(?<=(.)*).(?!.+¶(?>(?<-1>.)*)[|├└])
^
.¶

এটি অনলাইন চেষ্টা করুন!

আমি টেকনিক্যালি, কিছু অক্ষর আউট সোয়াপিং আইএসও 8859-1 যেমন উৎস পড়া এবং তারপর আউটপুট যা ধারণ করে একটি একক বাইট এনকোডিং ফাইন্ডিং দ্বারা চরিত্র প্রতি এক বাইট হিসাবে এই গণনা করতে পারে অনুমান করা এবং , কিন্তু আমি কাজ বিরক্ত করা যাবে না এখনই বিস্তারিত জানুন। (রেকর্ডের জন্য, এটি 72 বাইট হবে))

ব্যাখ্যা

মঞ্চ 1: প্রতিস্থাপন

m`^ *
$&├── 

আমরা প্রতিটি লাইনে ইনডেন্টেশনটি মিলিয়ে এবং সন্নিবেশ দিয়ে শুরু করি ├──

দ্বিতীয় পর্যায়: প্রতিস্থাপন

 {4}
|   

এর পরে, আমরা 4 টি স্পেসের প্রতিটি গ্রুপের সাথে মেলে এবং প্রথমটি একটি দ্বারা প্রতিস্থাপন করি |। এখন যা ঠিক |করতে হবে তা হ'ল আউটপুটটির নীচে যান এবং এটি হওয়া উচিত । আমরা সম্ভবত যেটি পরিবর্তন করতে চাই তার নিচে চরিত্রটি দেখে এই দুটি ক্ষেত্রেই চিহ্নিত করা যায়।

মঞ্চ 3: লিপ্যন্তর

T+`|├` └`(?<=(.)*).(?!.+¶(?>(?<-1>.)*)[|├└])

(?<=(.)*)কতটি অক্ষর বর্তমান লাইনে ম্যাচ আগে বসে এটা আনুভূমিক অবস্থান পরিমাপ। তারপর পরবর্তী লাইনে lookahead ছেড়ে যাওয়া .+¶অনেক অক্ষর হিসাবে আমরা দলের বন্দী করেছি ম্যাচ 1দিয়ে (?>(?<-1>.)*)(একই আনুভূমিক অবস্থান অগ্রিম যেতে) এবং তারপর কিনা তা পরীক্ষা পরবর্তী অক্ষরে (অর্থাত প্রকৃত নিচের) এক |├└। যদি সেই ক্ষেত্রে ম্যাচ ব্যর্থ হয়, এবং অন্যান্য সব ক্ষেত্রে এটি সফল এবং পর্যায়ের জন্য স্পেস কর্মের পরিবর্তে |এবং জন্য

এটি একক দৌড়ে সমস্ত অক্ষর ঠিক করবে না, সুতরাং +আউটপুট পরিবর্তিত হওয়া বন্ধ না হওয়া পর্যন্ত আমরা বিকল্পটির সাথে এই পর্যায়ে বারবার প্রয়োগ করি ।

পর্যায় 4: প্রতিস্থাপন

^
.¶

যা বাকি আছে তা প্রথম লাইন, সুতরাং আমরা কেবল স্ট্রিংয়ের .শুরুটির সাথে মেলে এবং একটি এবং একটি লাইনফিড প্রিপেন্ড করি।


ব্যাখ্যা দয়া করে?
নীল

@ নীল আপনি সেখানে যান
মার্টিন ইন্ডার

এটি +`(?<=(.*))\|(?!.+¶\1[|├])(স্থান) ব্যবহার করতে সহায়তা করবে +`(?<=(.*))├(?!.+¶\1[│├└]) ?
নীল

@ নীল আমি এরকম কিছু চেষ্টা করেছি তবে আমি মনে করি না আমি এটি দিয়ে বাইটগুলি সংরক্ষণ করতে পেরেছি।
মার্টিন ইন্ডার

নতুন ধারণা:m`^ * $&└── T+` └`|├`(?<=(.*)).(?=.+¶\1[|└])
নীল

2

জাভাস্ক্রিপ্ট (ES6), 237 128 বাইট

f=(s,r=`.\n`+s.replace(/^ */gm,"$&└── "),q=r.replace(/^(.*)( |└)(?=.+\n\1[|└])/m,(_,i,j)=>i+`|├`[+(j>' ')]))=>q==r?r:f(s,q)

যেখানে \nআক্ষরিক নিউলাইন চরিত্রের প্রতিনিধিত্ব করে। ব্যাখ্যা: rথেকে তৈরি করা হয় sprepending দ্বারা .লাইন এবং ঢোকাতে └──প্রতিটি লাইনে এর ইন্ডেন্ট শেষে। ইনপুটটির শেষ লাইনের জন্য এটি এখন সঠিক, তবে প্রতিটিকে যথাসম্ভব উপরের দিকে "প্রসারিত" করতে হবে। এই কাজ হয় q, যা একটি জন্য অনুসন্ধান এবং যাও recursively সাথে সরাসরি উপরে স্পেস প্রতিস্থাপন |যদি না তা অন্য ছুঁয়েছে গুলি যা পরিণত পরার পরিবর্তে। পুনরায় সংস্থান শেষ হয় যখন আর কোনও প্রতিস্থাপন করা যায় না। মনে রাখবেন যে উপরের অক্ষরটি যদি একটি স্থান বা একটি হয় তবে বামে বামে লেখাটি সর্বদা পূর্বের লাইনের মতো থাকে তাই আমি কেবল ব্যবহার করতে পারি\1 একটি অক্ষর অপরটির উপরে রয়েছে তা পরীক্ষা করতে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.