এইচ ট্রি ডিরেক্টরি


12

প্রোগ্রামাররা প্রায়শই অঙ্কন ফ্র্যাক্টাল নিয়ে আচ্ছন্ন হয় । আমি মনে করি আমাদের একটি নতুন কম্পিউটার ভিত্তিক মাধ্যম প্রয়োজন।

এইচ গাছ ফ্র্যাক্টাল একটি মোটামুটি সহজ টাইপ অনুভূমিক এবং উল্লম্ব লাইন দিয়ে তৈরি হয়। এটি এটি দশম পুনরাবৃত্তি ( সৌজন্য উইকিপিডিয়া ) এ:

এইচ গাছ

এখন, ভাবুন যে চিত্রটির প্রতিটি লাইন একটি স্ট্যান্ডার্ড কম্পিউটার ফাইল সিস্টেমের একটি ডিরেক্টরি (ফোল্ডার)। ক্ষুদ্রতম রেখাগুলি ব্যতীত সমস্ত দুটি তাদের চেয়ে ছোট দুটি রেখা ছেদ করে; এই দুটি ছোট লাইন বৃহত্তর রেখার উপ ডিরেক্টরি হয়। সুতরাং মাঝখানে বৃহত অনুভূমিক রেখাটি দুটি বৃহত্তম উল্লম্ব রেখার পিতামাতার ডিরেক্টরি, যা চিত্রের বাকী রেখাগুলির পিতা-মাতা, দাদা-দাদী ইত্যাদি রয়েছে are

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম লিখুন যা স্টিডিন বা কমান্ড লাইন (বা নিকটতম বিকল্প) এর মাধ্যমে ধনাত্মক পূর্ণসংখ্যার এন নেবে এবং একটি ডিরেক্টরি ট্রি তৈরি করে যা এইচ ট্রি ফ্র্যাক্টালের Nth পুনরাবৃত্তিকে আয়না দেয়।

প্রথম পুনরাবৃত্তি (N = 1) হ'ল একক অনুভূমিক রেখা। প্রতিটি পরবর্তী পুনরাবৃত্তিতে উল্লম্ব বা অনুভূমিক রেখার একটি নতুন সেট বর্তমান লাইনের প্রান্তে যুক্ত করা হয়। সুতরাং এন = 2 এর জন্য দুটি উল্লম্ব রেখা যুক্ত করা হয় (এইচ আকৃতি তৈরি করা), এন = 3 এর জন্য চারটি অনুভূমিক রেখা যুক্ত করা হয়, ইত্যাদি etc.

মূল ডিরেক্টরিটির নাম অবশ্যই সর্বদা থাকা উচিত tree। সাবডিরেক্টরি নাম দিক তারা তাদের পিতা বা মাতা লাইন থেকে সম্মান সঙ্গে আছে, ব্যবহার মেলানো right, left, upএবং down

যেহেতু মূল ডিরেক্টরিটি সর্বদা একটি অনুভূমিক রেখা থাকে এটি সর্বদা থাকবে rightএবং leftউপ-ডিরেক্টরি হবে। তবে এই দু'জনের থাকবে upএবং downউপ-ডিরেক্টরি হবে এবং সেগুলি আবারও থাকবে rightএবং আরও left

পুনরাবৃত্তির সীমা শেষে ডিরেক্টরিগুলি খালি থাকা উচিত।

উদাহরণ

এন = 3 এর জন্য ডিরেক্টরি গাছটি দেখতে দেখতে এমন হওয়া উচিত:

tree
    right
        up
        down
    left
        up
        down

অতিরিক্ত তথ্য

  • আদর্শভাবে treeডিরেক্টরিটি একই কোড ফোল্ডারে পপ আপ হবে উত্স কোডটি রয়েছে তবে এটি যদি কিছু কার্যকরী ডিরেক্টরিতে যায় তবে তা ঠিক আছে।
  • আপনি ধরে নিতে পারেন যে আপনার তৈরি করা হবে সেখানে কোনও পূর্ব-বিদ্যমান treeডিরেক্টরি নেই।
  • আপনি ধরে নিতে পারেন যে আপনার প্রোগ্রামটি সর্বদা একই সাধারণ আধুনিক অপারেটিং সিস্টেমে (ম্যাক / উইন্ডোজ / লিনাক্স) চালিত হবে। মূলত কোনও ফাইল বিভাজক যা সমস্ত ওএস-তে কাজ করে না সেগুলি ব্যবহার করার বিষয়ে চিন্তা করবেন না।

স্কোরিং

এটি কোড-গল্ফ, তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


treeসর্বদা এর উপ-ডিরেক্টরিগুলি কি সর্বদা leftএবং এর rightপরিবর্তে upএবং থাকা উচিত down?
কেএসএফটি

1
@ কেএসএফটি হ্যাঁ: "যেহেতু মূল ডিরেক্টরিটি সর্বদা একটি অনুভূমিক রেখা থাকে এটির সর্বদা ডান এবং বাম উপ-ডিরেক্টরি থাকবে" "
ক্যালভিনের

উত্তর:


5

রুবি, 127 বাইট

f=->n{n<2?['tree']:f[n-1].map{|p|%w{left right up down}[n%2*2,2].map{|d|p+?/+d}}.flatten}
system'mkdir "'+f[gets.to_i]*'" "'+?"

উইন্ডোজ পরীক্ষিত। STDIN এর মাধ্যমে ইনপুট নেয়।

fপুনরাবৃত্তভাবে গাছের প্রয়োজনীয় পাতার একটি তালিকা উত্পন্ন করে এবং তারপরে আমি কেবল তাদের একক সিস্টেমে কল করে ফিড করি mkdir


3

লুয়া, 179

t=0+io.read()a={"left","right","up","down"}function h(d,v)if v~=t then os.execute("mkdir "..d)x=1 if v%2==1 then x=3 end for g=x,x+1 do h(d.."\\"..a[g],v+1)end end end h("tree",0)

2

পাইথন - 194

from os import system as s
a="mkdir "
s(a+"tree")
def f(n):
 if n<j%2:return
 for i in(0,1):m=["up"if n%2 else"left","rdiogwhnt"[n%2::2]][i];s(a+m);s("cd "+m);f(n-1);s("cd..")
j=input()
f(j+j%2)

এটি করা সামান্য ছোটfrom os import*;s=system
ডেনডেনডো

আরও দুটি জিনিস: ["left","up"][n%2](0,1)for i in 0,1:
আপনিও

2

পাইথন 2 + * নিক্স কোর্টিলস, 212 189

সমস্ত অন্তঃস্থ পথ এবং কল উত্পন্ন করে

mkdir -p

import os
n=int(raw_input())-1 
for i in range(2**n):os.system("mkdir -p "+os.path.join('tree',*([['right','left'],['up','down']][b%2][int(j)]for b,j in enumerate('{:0{}b}'.format(i,n)))))

ইনপুট <1 থাকলে ক্রাশ হয়


আপনি প্রথম দুটি লাইন একত্রিত করতে পারেন:import os,itertools as t
ডেনডেনডো

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