कोड को आप अखरोट में डालें और इसे सभी को हिलाएं


10

एक प्रोग्रामिंग भाषा का उपयोग करते हुए 5 सिंगल-लाइन प्रोग्राम लिखते हैं, जिनमें से प्रत्येक हैरी निल्सन के 1972 के गीत " कोकोनट " के पहले पद्य की एक अलग लाइन को अलग-अलग चलाने पर आउटपुट करता है:

भाई एक नारियल खरीद लिया तब उन्हें यह एक पैसा के लिए खरीदा है,
, उसकी बहन एक दूसरे था वह एक नींबू के लिए यह भुगतान किया
वह नारियल में चूना डाल दिया, वह उन्हें पिया दोनों ऊपर
वह नारियल में चूना डाल दिया, वह उन दोनों को पिया अप
वह चूना नारियल में डाला, उसने उन दोनों को पी लिया

( पूर्ण गीत )

अंतिम 3 पंक्तियों में एक ही गीत है, इसलिए आपके अंतिम 3 कार्यक्रम भी हो सकते हैं।

5 फैक्टरियल या 120 तरीके हैं इन 5 सिंगल-लाइन प्रोग्राम को एक सिंगल-लाइन प्रोग्राम में प्रति लाइन एक की व्यवस्था की जा सकती है। आपको अपने सिंगल-लाइन प्रोग्राम को ऑप्टिमाइज़ करना होगा जैसे कि इन 120 में से कई कॉम्बिनेशन के लिए 5-लाइन प्रोग्राम पूरे वर्जन को उसके उचित क्रम में आउटपुट करता है , ठीक उसी तरह जैसा कि यह ऊपर दिखाई देता है।

उदाहरण

सबसे सरल उत्तर में 5 सिंगल लाइन प्रिंट स्टेटमेंट होंगे, अंतिम 3 समान:

print('Brother bought a coconut, he bought it for a dime')
print('His sister had another one, she paid it for a lime')
print('She put the lime in the coconut, she drank them both up')
print('She put the lime in the coconut, she drank them both up')
print('She put the lime in the coconut, she drank them both up')

5-लाइन कार्यक्रमों के लिए आउटपुट अपने उचित क्रम में कविता होगा जब तक कि पहले दो सिंगल-लाइनर्स अपने सही स्थानों पर न हों। 120 संभावित व्यवस्थाओं में से केवल 6 ही इसे पूरा करती हैं।

स्कोरिंग

सभी 120 जीत में से सबसे अधिक काम करने वाले मामलों के साथ प्रस्तुत करना। टाई ब्रेकर सबसे कम संचयी बाइट गिनती के साथ कार्यक्रमों के सेट पर जाता है (नए अंक की गिनती नहीं की जाती है)। उदाहरण में 309 बाइट्स हैं।

विवरण

  • आपके कार्यक्रम अपने स्वयं के स्रोत कोड नहीं पढ़ सकते हैं। न ही उन्हें अन्य बाहरी फ़ाइलों को पढ़ना चाहिए या नेटवर्क कनेक्शन की आवश्यकता नहीं होनी चाहिए।

  • स्टडआउट या निकटतम विकल्प के लिए आउटपुट। आप अपनी पसंद के नाम से किसी फ़ाइल में भी आउटपुट कर सकते हैं।

  • "सिंगल-लाइन प्रोग्राम" ऐसे तार होते हैं जिनमें लाइन टर्मिनेटर को छोड़कर कोई भी वर्ण होता है (आपको शायद नए सिरे से चिंता करने की आवश्यकता होगी)।

  • 5-लाइनर्स में सिंगल-लाइनर्स की रचना करते समय, आपको बिल्कुल 4 न्यूलाइन्स को जोड़ना चाहिए, सिंगल-लाइनर्स के प्रत्येक आसन्न जोड़े के बीच। आप वैकल्पिक रूप से एक अनुगामी न्यूलाइन जोड़ सकते हैं।


"5 प्रोग्राम लिखें जो प्रत्येक आउटपुट एक अलग लाइन ..." यह असंभव नहीं है?
फ़ेरसम

@ Faersum लाइनें अलग हैं। उनमें से तीन सिर्फ एक ही पाठ के लिए होते हैं।
केल्विन के शौक

क्या होगा अगर मेरे पास एक जावा फ़ाइल है जिसमें 5 कक्षाएं हैं, प्रत्येक एक mainविधि के साथ है ? फिर प्रोग्राम चलाते समय, जो चलाया जाना चाहिए?
feersum

@ Faersum वैसे आपके कंपाइलर क्या करते हैं? मुझे यकीन नहीं है कि जब दोनों के पास एक ही फाइल में कई कक्षाएं होती हैं तो जावा क्या करता है main
केल्विन के शौक

2
जिस तरह से मुझे यह याद है वह यह है कि एक कोका-कोला विज्ञापन जहां वे "कोक में चूना डालते हैं" ...
जो जेड।

जवाबों:


9

CJam, 120 वैध परमिट, 334 299 290 बाइट्स

"She put the lime in the coconut, she drank them both up"N+
"Brother bought a coconut, he bought it for a dime"N+]$~
"She put the lime in the coconut, she drank them both up"N+
"His sister had another one, she paid it for a lime"N+]$~
"She put the lime in the coconut, she drank them both up"N+

बहुत सरल तर्क:

  • 5 कार्यक्रमों में से प्रत्येक में गीत की एक पंक्ति रखो
  • एक सरणी में स्टैक पर सब कुछ लपेटें
  • सरणी को सॉर्ट करें
  • सरणी को अनप्लग करें ताकि अगला प्रोग्राम उसी तर्क का उपयोग कर सके
  • प्रत्येक चरण में, हमारे पास एक सरणी में आंशिक गीत हैं। सौभाग्य से, सरणी को सॉर्ट करने से गीत के सही क्रम का पता चलता है।

अद्यतन : पता चलता है कि आप 3 के समान रैप-सॉर्ट-अनचेक चक्र की आवश्यकता नहीं है और गीत के अंत लाइनों पर दिखाई दे रहा है। मैं समझा सकता हूँ क्यों अगर यह स्पष्ट नहीं है :)


8

प्रस्तावना , 120 क्रमपरिवर्तन, 2045 2035 बाइट्स

9-9-9-9-9-9-9-9-9-5-97+993++09-9-9-9-9-9-9-1-8992++96+209-9-9-9-9-9-9-1-94+58992++09-9-9-9-9-9-9-1-92+95+199+409-9-9-9-9-9-9-1-58991++09-9-9-9-9-9-9-1-09-9-9-9-9-7-992++993++95+96+396+309-9-9-9-9-9-9-1-58992++09-9-9-9-9-9-9-1-95+909-9-9-9-9-9-9-1-594+993+09-9-9-9-9-9-9-1-58992++09-9-9-9-9-9-9-1-992++993++97+09-9-9-9-9-9-9-1-5809-4-                                                                          (9+9+9+9+9+9+9+9+9+9+6+!)
9-9-9-9-9-9-9-9-9-5-594+9409-9-9-9-9-9-9-1-109-9-9-9-9-9-9-1-99+96+609-9-9-9-9-9-9-1-992++909-9-9-9-9-9-9-1-992++87993++96+209-9-9-9-9-9-9-1-5809-9-9-9-9-9-9-1-09-9-9-9-9-7-992++993++95+96+396+309-9-9-9-9-9-9-1-109-9-9-9-9-9-9-1-992++87993++96+209-9-9-9-9-9-9-1-99+58992++96+99+09-9-9-3-                                             (9+9+9+9+9+9+9+9+9+9+6+!)
9-9-9-9-9-9-9-9-9-5-97+993++09-9-9-9-9-9-9-1-8992++96+209-9-9-9-9-9-9-1-94+58992++09-9-9-9-9-9-9-1-92+95+199+409-9-9-9-9-9-9-1-58991++09-9-9-9-9-9-9-1-09-9-9-9-9-7-992++993++95+96+396+309-9-9-9-9-9-9-1-58992++09-9-9-9-9-9-9-1-95+909-9-9-9-9-9-9-1-594+993+09-9-9-9-9-9-9-1-58992++09-9-9-9-9-9-9-1-992++993++97+09-9-9-9-9-9-9-1-5809-4-                                                 (9+9+9+9+9+9+9+9+9+9+6+!)
9-9-9-9-9-9-9-9-9-5-594+993+09-9-9-9-9-9-9-1-109-9-9-9-9-9-9-1-99+96+609-9-9-9-9-9-9-1-992++909-9-9-9-9-9-9-1-49197+09-9-9-9-9-9-9-1-58991++09-9-9-9-9-9-9-1-09-9-9-9-9-7-595+96+09-9-9-9-9-9-9-1-99+58992++96+95+109-9-9-9-9-9-9-1-41809-9-9-9-9-9-9-1-99+5992++991++9991++09-9-9-9-9-9-9-1-991++909-9-6-                                                           (9+9+9+9+9+9+9+9+9+9+6+!)
9-9-9-9-9-9-9-9-9-5-97+993++09-9-9-9-9-9-9-1-8992++96+209-9-9-9-9-9-9-1-94+58992++09-9-9-9-9-9-9-1-92+95+199+409-9-9-9-9-9-9-1-58991++09-9-9-9-9-9-9-1-09-9-9-9-9-7-992++993++95+96+396+309-9-9-9-9-9-9-1-58992++09-9-9-9-9-9-9-1-95+909-9-9-9-9-9-9-1-594+993+09-9-9-9-9-9-9-1-58992++09-9-9-9-9-9-9-1-992++993++97+09-9-9-9-9-9-9-1-5809-4-                                                                                                   (9+9+9+9+9+9+9+9+9+9+6+!)

इससे आखिरकार मुझे यकीन हो गया कि प्रिल्यूड और सीजेएम को एक बच्चे की जरूरत है। यदि यह Prelude के बहुत सीमित निर्देश सेट के लिए नहीं था, तो यह सबमिशन वास्तव में बहुत प्रतिस्पर्धी होगा, अगर यह CJam को भी नहीं हराता।

मूल विचार निम्नलिखित है

"push line 4"               print
"push line 1"print
"push line 3"          print
"push line 2"     print
"push line 5"                    print

प्रिल्यूड में, प्रत्येक पंक्ति अपनी खुद की "आवाज" है, जिसकी अपनी स्टैक है, और इन आवाज़ों को समानांतर में निष्पादित किया जाता है। यही है, पूर्ण कार्यक्रम में, प्रत्येक पंक्ति व्यक्तिगत रूप से स्ट्रिंग का निर्माण करेगी और अंत में इसे प्रिंट करेगी। लेकिन प्रिंट स्टेटमेंट्स के ऑफसेट के कारण, लाइनों का क्रम आउटपुट के आदेश के लिए बिल्कुल भी मायने नहीं रखता है, क्योंकि निष्पादन बाएं से दाएं, ऊपर से नीचे नहीं है।

अब, लाइनें इतनी लंबी क्यों हैं? केवल अपने स्टैक पर संख्याओं को संग्रहीत करें। इसके अलावा, यह एक समय में केवल एक-अंकों की संख्या को आगे बढ़ा सकता है, इसलिए बड़ी संख्या को जोड़ और घटाव से निर्मित किया जाना है (कोई गुणन या अन्य अंकगणित भी नहीं है)। तो कोड का सबसे बड़ा हिस्सा केवल सही वर्ण कोड की गणना और धक्का है। इसे थोड़ा छोटा करने के लिए, मैं उनकी भरपाई करता हूं 96। अंत में, प्रिंट करने के लिए, मैं तब तक लूप करता हूं जब तक कि स्टैक खाली न हो (यानी एक 0सामना किया गया है), प्रत्येक नंबर पर 96 जोड़ें, और इसे प्रिंट करें।

ध्यान दें कि स्ट्रिंग्स को रिवर्स में धकेल दिया जाता है, क्योंकि वे पिछले से पहले वर्ण तक मुद्रित होते हैं।

यह पायथन दुभाषिया के साथ मानता हैNUMERIC_OUTPUT = False (जो कि कैसे कल्पना I / O को परिभाषित करता है)।

मैंने स्ट्रिंग निर्माण के लिए निम्न CJam कोड का उपयोग किया:

"Brother bought a coconut, he bought it for a dime
"W%{i96-_0<{zLa*9/:,'-*'-+0\+}{La*9/:,_,'+*W<}?}%

अंत में, बस मज़े के लिए, मुझे लगता है कि यह वास्तव में बहुत कम होगा यदि प्रील्यूड में स्ट्रिंग्स की अवधारणा थी:

"pu htob meht knard ehs ,tunococ eht ni emil eht tup ehS"N+!
"emid a rof ti thguob eh ,tunococ a thguob rehtorB"N+!
"pu htob meht knard ehs ,tunococ eht ni emil eht tup ehS"N+!
"emil a rof ti diap ehs ,eno rehtona dah retsis siH"N+!
"pu htob meht knard ehs ,tunococ eht ni emil eht tup ehS"N+!

अब प्रिंट स्टेटमेंट !पहले से ही सही क्रम में हैं, इसलिए मुझे उन्हें ऑफसेट करने की आवश्यकता नहीं होगी। मुझे लगता है कि मैं इसे लागू करने के लिए कुछ समय के लिए उतरूंगा।


7

रूबी, 120 वैध क्रमपरिवर्तन, 430 बाइट्स

$*[1]='His sister had another one, she paid it for a lime';a||=at_exit{puts($*-[p])}
$*[0]='Brother bought a coconut, he bought it for a dime';a||=at_exit{puts($*)}
$*[2]='She put the lime in the coconut, she drank them both up';a||=at_exit{puts($*-[p])}
$*[3]='She put the lime in the coconut, she drank them both up';a||=at_exit{puts($*-[p])}
$*[4]='She put the lime in the coconut, she drank them both up';a||=at_exit{puts($*-[p])}

किसी भी क्रम में, या व्यक्तिगत रूप से काम करता है। प्रत्येक पंक्ति वैश्विक स्थिति को संशोधित करती है, फिर कार्यक्रम के अंत में निष्पादित होने के लिए एक हुक सेट करता है जब तक कि हुक पहले से सेट नहीं किया गया हो।


सवाल कहता है "5 एकल-लाइन कार्यक्रम"। क्या इसका मतलब यह नहीं है कि प्रत्येक पंक्ति एक अलग कार्यक्रम में होनी चाहिए? सभी एक में नहीं?
बेचेसबेल

1
बस स्वरूपण का सवाल है। प्रत्येक पंक्ति अपने स्वयं के कार्यक्रम के रूप में काम करती है।
हिस्टोक्रेट

6

> <> , 120 क्रमपरिवर्तन, 703 बाइट्स

<    /a"emid a rof ti thguob eh ,tunococ a thguob rehtorB"0a.#.!50padpacpabpaapa9pa8pa7p97p87p77p67p57p95p84p73p62p51"/////\\\\\>l0=?;o"
<   / a"emil a rof ti diap ehs ,eno rehtona dah retsis siH"09.#.!50padpacpabpaapa9pa8pa7p97p87p77p67p57p95p84p73p62p51"/////\\\\\>l0=?;o"
<  /  a"pu htob meht knard ehs ,tunococ eht ni emil eht tup ehS"08.#.!50padpacpabpaapa9pa8pa7p97p87p77p67p57p95p84p73p62p51"/////\\\\\>l0=?;o"
< /   a"pu htob meht knard ehs ,tunococ eht ni emil eht tup ehS"07.#.!50padpacpabpaapa9pa8pa7p97p87p77p67p57p95p84p73p62p51"/////\\\\\>l0=?;o"
</    a"pu htob meht knard ehs ,tunococ eht ni emil eht tup ehS"06.#.!50padpacpabpaapa9pa8pa7p97p87p77p67p57p95p84p73p62p51"/////\\\\\>l0=?;o"

वन-लाइनर प्रतिबंध 2 डी भाषा के लिए बहुत कठिन था, इसलिए मुझे .टेलीपोर्ट इंस्ट्रक्शन का अधिकतम लाभ उठाने का एक तरीका खोजना पड़ा ।

प्रारंभिक <कार्यक्रम प्रवाह को पीछे की ओर करता है, चारों ओर लपेटता है और निष्पादित करता है

"o;?=0l>\\\\\\/////"15p26p37p48p59p75p76p77p78p79p7ap8ap9apaapbapcapdap

यह p(पुट) निर्देशों की एक श्रृंखला है जो बोर्ड को इस तरह दिखने तक चार जगह देता है:

<    /<lyrics1>0a.#.!50<blah>
<   / <lyrics2>09.#.!50<blah>
<  /  <lyrics3>08.#.!50<blah>
< /   <lyrics4>07.#.!50<blah>
</    <lyrics5>06.#.!50<blah>
 /     \
  /    \
   /   \
    /  \
     / \
       >l0=?;o

#.!50तो दाहिनी ओर करने के लिए प्रोग्राम प्रवाह वापस flips फिर, लाइन 5. करने के लिए कूद से पहले क्या इस प्रकार है:

  • /5 लाइन पर दर्पण के बाद, बोल 5 मिलते हैं, जो स्टैक पर धकेल दिया जाता है। हम तो 6 लाइन के लिए teleport।
  • /लाइन 6 पर दर्पण के बाद बोल 4 मिलते हैं, जो स्टैक पर धकेल दिया जाता है। हम तो teleport करने के लिए लाइन 7।
  • /लाइन 7 पर दर्पण के बाद बोल 3 मिलते हैं ...

यह तब तक होता है जब तक हम गीत 1 को धक्का नहीं देते हैं, जिस बिंदु पर हम लाइन 10 को टेलीपोर्ट करते हैं। यह खाली होने तक पूरे स्टैक को प्रिंट करने के लिए एक लूप है।

यदि प्रोग्राम की केवल एक लाइन मौजूद है, तो \दर्पण प्रत्येक लाइरिक लाइन पर टेलीपोर्ट के समान कार्य करते हैं।

यदि कार्यक्रम को तूल दिया जाता है, तो ऊपर दिया गया स्पष्टीकरण अभी भी लागू होता है, इसलिए कार्यक्रम सभी क्रमपरिवर्तन के लिए काम करता है!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.