ब्रेनफक - 680
इसे यहाँ परखें : ideone.com/Wi9ftB
>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.
जैसा कि मैंने वादा किया था, यहाँ एक बेहतर संस्करण है। मेरा दिमाग ऐसा लगता है .. ओह, तो यह है कि जहां से नाम आता है।
स्पष्टीकरण: (क्योंकि यह अकल्पनीय है और मैं यह नहीं भूलना चाहता कि यह कैसे काम करता है)
सबसे पहले आपको इस चुनौती के लिए सबसे अच्छा डेटा लेआउट चुनना होगा। मेरे द्वारा लाया गया
-4 outmost loop
-3 newline char
-2 space
-1 numbers
1 lowercase #1
2 lowercase #2
3 comma, apostrophe, period
4 condition (outmost loop < 3)
5 inner loop
6 second inner loop
हमें यह विश्वास करना होगा कि यह तब तक इष्टतम है जब तक कि बहुत अधिक बदलाव नहीं होंगे (जो कि आपको लेआउट को फिर से व्यवस्थित करना होगा)
उसके बाद मैंने नई लाइन, संख्या, दो लोअरकेस अक्षर और अल्पविराम के लिए शुरुआती मान सेट करने के लिए 4x9x3 लूप का उपयोग किया। (सभी छोटे एससीआई कोडों को 4x9 = 36 मिला और दो लोअरकेस अक्षर को 4x9x3 = 108 मिला, फिर मैंने कुछ जोड़ा और उनका वास्तविक मूल्य प्राप्त किया।
जब प्रीसेट किया जाता है, तो कोड सबसे बाहरी लूप में प्रवेश करता है जो 3 बार चक्र करता है। मैं इसे pseudocode द्वारा समझाता हूं।
for 3 to 1 where i = numbers
print '++i, '
while inner_loop != 0 # this is true after the first loop
while second_inner_loop != 0 # and this is true after the second
print '10, 11 o'clock, 12' # prints the difference
condition = 0 # it prevents the printing below
second_inner_loop += 1
inner_loop += 1
while condition != 0
print '++i, ++i o'clock, ++i'
print ' o'clock rock,\n'
जब यह अनुभाग पूरा हो जाता है तो मुझे केवल अंतिम पंक्ति प्रिंट करनी होती है लेकिन हमारे पास एक अपरकेस डब्ल्यू है जिसे बहुत सारे पात्रों का उपयोग किए बिना उत्पादित किया जाना चाहिए। इस बिंदु पर हम यहां हैं:
Address Value Pointer
-4 0 <--
-3 10
-2 32
-1 50
1 99
2 111
3 44
इसलिए मैंने [-3] को [-1] में 4 बार डाला और 87 (डब्ल्यू) प्राप्त करने के लिए 3 को प्रतिस्थापित किया: >[>>++++<<-]>>---.
फिर इसे मिटा दें [-]
और [-2] को इस स्थान पर ले जाएं [-1] इसलिए स्थान लोअरकेस अक्षरों के करीब होगा।<[>+<-]
उसके बाद यह सिर्फ अक्षरों को प्रिंट करता है। निचला भाग # 1 निचले भाग 97-107 के लिए है और निचला भाग # 2 उपरोक्त क्षेत्र के लिए है।