कभी-कभी, जब मैं वास्तव में ऊब ( वास्तव में ऊब) होता हूं, तो मुझे एक लाइन खंड खींचना और उस पर अंक खींचना पसंद है।
सबसे पहले, मैं एक निश्चित आकार के एक लाइन सेगमेंट को आकर्षित करता हूं, जो कि एन के कुछ मूल्य के लिए 2 ^ एन है। लाइन को .वर्णों की एक श्रृंखला द्वारा दर्शाया जाएगा ।
................
फिर, मैं बाएं छोर पर एक बिंदु की साजिश करता हूं। अंक Xपात्रों द्वारा दर्शाए जाएंगे ।
X...............
फिर, मैं एक पैटर्न का पालन करता हूं। सबसे हाल ही में प्लॉट किए गए बिंदु (जिसे मैं ए कहूंगा) पर शुरू करते हुए, मैं लाइन पर अगले प्लॉट किए गए बिंदु (बी) पर अग्रिम करता हूं (आवश्यक रूप से चारों ओर लपेटता हूं)। फिर, मैं लाइन (सी) पर अगले प्लॉट किए गए बिंदु पर अग्रिम करता हूं । फिर, मैं इस तीसरे बिंदु (C) और अगले पहले से प्लॉट किए गए बिंदु (D) के बीच में एक नए बिंदु पर आधे रास्ते की साजिश रचता हूं।
जब भी आप रेखा के चारों ओर लपेटते हैं, तो "मध्य" को रैपिंग तरीके से निर्धारित किया जाता है। नव प्लॉट किया गया बिंदु हमेशा C के दाईं ओर होता है।
मान लीजिए कि निम्नलिखित पंक्ति मेरी वर्तमान रेखा थी। यहां बताया गया है कि मैं अगले दो बिंदुओं को कैसे लिखूंगा। इस उदाहरण के लिए, मैं प्रत्येक महत्वपूर्ण बिंदु को एक पत्र के साथ लेबल करूँगा।
X...A...X.X...X.
^
X...A...B.X...X.
^
X...A...B.C...X.
^
X...A...B.C...D.
^
X...X...X.X.A.X.
^
X...X...X.X.A.B.
^
C...X...X.X.A.B.
^
C...D...X.X.A.B.
^
X.A.X...X.X.X.X.
^
पिछले उदाहरण पर लौटते हुए, अगले बिंदु को लाइन के बीच में प्लॉट किया जाएगा।
X.......X.......
यह शायद एक विशेष मामले का एक छोटा सा हिस्सा है: अगले बिंदु पर आगे बढ़ने से बस आपको छोड़ देता है जहां आपने शुरू किया था। एकमात्र उपयोगी आधा बिंदु "चक्रीय" आधा बिंदु (लाइन पर आधा बिंदु) है, जैसा कि खुद के शीर्ष पर एक बिंदु को साजिश रचने का विरोध किया गया था।
नीचे बिंदुओं की श्रृंखला है जिसे मैं यहां से अंत तक लाइन पर लिखूंगा।
X.......X.......
X.......X...X...
X.......X.X.X...
X...X...X.X.X...
X...X...X.XXX...
X.X.X...X.XXX...
X.X.X...XXXXX...
अगले बिंदु पर प्लॉट करने के लिए अब कोई जगह नहीं है, क्योंकि यह दो आसन्न बिंदुओं के बीच होना चाहिए, इसलिए मैं एन = 4 के दिए गए मूल्य के लिए अधिकतम गहराई तक पहुंच गया हूं। उपरोक्त सूची में अंतिम पंक्ति "पूर्ण" है। । "
चुनौती
लक्ष्य सबसे छोटा प्रोग्राम / नामित फ़ंक्शन लिखना है जो एन के दिए गए मान के लिए पूरी की गई रेखा को प्रिंट / वापस करेगा। उपरोक्त = 4 दिखाता है।
इनपुट
इनपुट एक एकल गैर-नकारात्मक पूर्णांक N होगा। उत्पन्न लाइन की लंबाई तब 2 ^ N होगी।
उत्पादन
आउटपुट लंबाई 2 ^ N की पूरी लाइन होगी, जो कि अक्षरों .और Xवर्णों द्वारा बनाई गई है । एक अनुगामी newline कोई फर्क नहीं पड़ता।
उदाहरण I / O
0
X
1
XX
2
X.XX
3
X.X.XXX.
4
X.X.X...XXXXX...
5
X.X.X...X...X...X.XXX.XXX.......
(c%b+b)%b? क्या आपcनकारात्मक होने की उम्मीद कर रहे हैं ?