प्रोग्रामर अक्सर ड्राइंग भग्न के साथ रहते हैं। मुझे लगता है कि हमें एक नया कंप्यूटर आधारित माध्यम चाहिए।
एच पेड़ भग्न के एक काफी सरल प्रकार क्षैतिज और ऊर्ध्वाधर लाइनों से बना है। यहाँ यह दसवें पुनरावृत्ति पर है ( शिष्टाचार विकिपीडिया ):
अब, कल्पना करें कि छवि में प्रत्येक पंक्ति एक मानक कंप्यूटर फ़ाइल सिस्टम में एक निर्देशिका (फ़ोल्डर) है। सभी लेकिन सबसे छोटी रेखाएं दो पंक्तियों को अपने से छोटी रेखाओं को काटती हैं; ये दो छोटी रेखाएँ बड़ी रेखा की उपनिर्देशिकाएँ हैं । इस प्रकार बीच में बड़ी क्षैतिज रेखा दो सबसे बड़ी ऊर्ध्वाधर रेखाओं की मूल निर्देशिका है, जो छवि के बाकी हिस्सों की बारी माता-पिता, दादा-दादी आदि हैं।
चुनौती
एक प्रोग्राम लिखें जो एक सकारात्मक पूर्णांक N में स्टड या कमांड लाइन (या निकटतम विकल्प) के माध्यम से लेता है और एक निर्देशिका ट्री बनाता है जो एच ट्री फ्रैक्टल के Nth पुनरावृत्ति को दर्पण करता है।
पहली पुनरावृत्ति (एन = 1) एक एकल क्षैतिज रेखा है। प्रत्येक बाद के पुनरावृत्ति में ऊर्ध्वाधर या क्षैतिज रेखाओं का एक नया सेट वर्तमान लाइनों के सिरों में जोड़ा जाता है। तो N = 2 के लिए दो वर्टिकल लाइनें जोड़ी जाती हैं (H आकृति बनाते हुए), N = 3 के लिए उस में चार क्षैतिज रेखाएँ जोड़ी जाती हैं, आदि।
रूट डायरेक्टरी का नाम हमेशा होना चाहिए tree
। उपनिर्देशिका के नाम दिशा है कि वे अपने माता-पिता रेखा के संबंध में कर रहे हैं, का उपयोग कर से मेल खाना चाहिए right
, left
, up
और down
।
चूंकि रूट डायरेक्टरी हमेशा एक क्षैतिज रेखा होती है, इसलिए इसमें हमेशा right
और left
उपनिर्देशिकाएँ होंगी । लेकिन उन दो के पास up
और down
उपनिर्देशिकाएँ होंगी , और उन के पास right
और left
फिर से, और इसी तरह होगी।
पुनरावृत्तियों की सीमा के अंत में निर्देशिका खाली होनी चाहिए।
उदाहरण
N = 3 के लिए डायरेक्टरी ट्री इस तरह दिखना चाहिए:
tree
right
up
down
left
up
down
अतिरिक्त जानकारी
- आदर्श रूप से
tree
निर्देशिका उसी फ़ोल्डर में पॉप अप हो जाएगी जिसमें स्रोत कोड होता है, लेकिन यह ठीक है यदि यह कुछ कार्यशील निर्देशिका में जाता है। - आप मान सकते हैं कि
tree
आपके द्वारा बनाई गई जगह में पहले से मौजूद कोई निर्देशिका नहीं है। - आप मान सकते हैं कि आपका प्रोग्राम हमेशा एक ही समान आधुनिक ऑपरेटिंग सिस्टम (मैक / विंडोज / लिनक्स) पर चलाया जाएगा। मूल रूप से एक फ़ाइल विभाजक का उपयोग करने के बारे में चिंता न करें जो सभी ओएस में काम नहीं करता है।
स्कोरिंग
यह कोड-गोल्फ है, इसलिए बाइट्स में सबसे छोटा कोड जीत जाता है।
tree
हमेशा रहना होगाleft
औरright
के बजायup
औरdown
?