बढ़ता हुआ क्रम


18

आपको 10 कार्यक्रमों का क्रम लिखना है p1 p2 ... p10जो निम्नलिखित गुणों को पूरा करते हैं:

  • pK1 से 9 के pK+1लिए प्रिंटK
  • p10 प्रिंट p10
  • जब पहले Kकार्यक्रमों को संक्षिप्त किया जाता है, तो परिणामी प्रोग्राम p1...pKप्रिंट होता है p1...pK
  • प्रत्येक प्रोग्राम pKपिछले प्रोग्राम की तुलना में बाइट के आकार में बड़ा होना चाहिए pK-1
  • सभी कार्यक्रम एक ही भाषा में होने चाहिए।
  • अंतर्निहित क्वीनिंग फ़ंक्शन (उदाहरण Qके लिए कई भाषाओं में) की अनुमति है।

आपका स्कोर 10 कार्यक्रमों की बाइट मायने रखता है। चूंकि केवल दस कार्यक्रम हैं, इसलिए आपको अपने कोड को यथासंभव छोटा करना चाहिए। सौभाग्य।


"प्रत्येक प्रोग्राम पीके पिछले प्रोग्राम पीके -1 की तुलना में बाइट के आकार में बड़ा होना चाहिए" - हुह, यह अजीब आवश्यकता क्यों है?
निकेल

6
@nicael क्योंकि यह एक बढ़ता हुआ क्रम है।
कॉनर ओ'ब्रायन

पी 10 खुद क्यों प्रिंट करता है और पी 11 नहीं? जिससे समस्या थोड़ी कठिन हो जाती है।
सुपरजेडी २२४

@ SuperJedi224 क्योंकि बस वहाँ कोई p11 नहीं है।
कॉनर ओ'ब्रायन

यह चुनौती और भी दिलचस्प होती अगर बिल्ट-इन क्विनिंग फ़ंक्शंस को मना किया गया होता।
डेनिस

जवाबों:


15

गंभीरता से, 245 बाइट्स:

सभी दस कार्यक्रम संक्षिप्त किए गए:

Q9ucQc8<WX#dXεj0WX.Q9ucQc8<WX#dXεj0WX.
Q9ucQc8<WX#dXεj0WX.

Q9ucQc8<WX#dXεj0WX.


Q9ucQc8<WX#dXεj0WX.



Q9ucQc8<WX#dXεj0WX.




Q9ucQc8<WX#dXεj0WX.





Q9ucQc8<WX#dXεj0WX.






Q9ucQc8<WX#dXεj0WX.







Q9ucQc8<WX#dXεj0WX.









अदृश्य अक्षर हैं जो निष्पादित होने पर दिखाई देते हैं, बाइट 7F की एक अजीब संपत्ति। प्रत्येक कार्यक्रम पर अनुगामी newlines महत्वपूर्ण हैं। वास्तव में, गंभीरता से स्वचालित रूप से इसके उत्पादन के लिए नई रूपरेखाओं को जोड़ देता है चाहे आप इसे चाहते हैं या नहीं। यह आउटपुट में नई संख्याओं की संख्या को गिनता है, और जैसे ही यह संख्या 8 से अधिक हो जाती है, यह आउटपुट के अंतिम वर्ण को हटा देता है। जैसे, सभी K> 4 के लिए p1..pKप्रिंट करेंगे p1..pK

Q                                  Push source code.
 9uc                               Push \n
    Qc                             Push the number of times it appears in source code.
      8<                           Check if it appears more than 8 times.
        WX     0WX                 If so, run the included code.
          #dX                      Convert string to list, dequeue and discard a newline.
             εj                    Join list back into string.
                  .                Print and halt. (Invisible byte here.)

1
दिलचस्प! यह वास्तव में संभव है।
कोनोर ओ ब्रायन

7
क्या मैं प्रत्येक ली दूज को लीच वास की व्याख्या कर सकता हूं
सद्रुस

3
यह ध्यान दिया जाना चाहिए कि यह क्विनिंग बिल्ट-इन का उपयोग करता है Qजिसमें प्रोग्राम के स्रोत कोड को धक्का देता है।
मार्टिन एंडर

(और आगे कहा गया है कि कुल लंबाई 150 बाइट्स के आसपास के क्षेत्र में कहीं बिना निर्मित में होगी।)
क्विंटोपिया

इस चुनौती के लिए अंतर्निहित क्वीनिंग कार्यों की अनुमति है।
कॉनर ओ'ब्रायन

9

जावास्क्रिप्ट (ईएस 6), 985

function f(x){x<0||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(0);
 function f(x){x<1||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(1);
  function f(x){x<2||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(2);
   function f(x){x<3||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(3);
    function f(x){x<4||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(4);
     function f(x){x<5||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(5);
      function f(x){x<6||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(6);
       function f(x){x<7||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(7);
        function f(x){x<8||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(8);
         function f(x){x<9||x>8||f.a||x++;alert(f.a=' '.repeat(x)+`${f}f(${x});`.replace(/\d/,x))}f(9);

मैंने पहले नियमों को गलत समझा, इसलिए मेरा पिछला जवाब गलत था।

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

डिस्क्लेमर: अभी वास्तव में देर हो चुकी है, इसलिए ऊपर का सब कुछ पूरी तरह से गलत हो सकता है।


मुझे नहीं लगता कि alertफ़ंक्शन आउटपुट के कारण आपको आवश्यकता है ।
मामा फन रोल

ओह, मैं देखता हूँ, कोई बात नहीं।
मामा फन रोल

आप 20 सेमी की बचत करते हुए, अर्धविराम ट्रेल्स निकाल सकते हैं। (टेम्प्लेट स्ट्रिंग को अंदर भी अपडेट करना सुनिश्चित करें।)
मामा फन रोल

1
@ Conc मुझे लगता है कि अर्धविराम के लिए अर्धविरामों की आवश्यकता होती है, क्योंकि मैं वास्तव में न्यूलाइन्स सहित नहीं हूं।
grc

फिर कभी नहीं।
मामा फन रोल

9

जावास्क्रिप्ट ईएस 6, 1935 बाइट्स

दस कार्यक्रम:

a=_=>{t=`a=${a};a()`;setTimeout(_=>alert(t.length>200?t:";".repeat(82)+'a=_=>{/*  */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\\s)+g,"$0$1"):u)};a();'))};a()
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;a=_=>{/*  */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\s)+g,"$0$1"):u)};a();
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;a=_=>{/*   */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\s)+g,"$0$1"):u)};a();
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;a=_=>{/*    */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\s)+g,"$0$1"):u)};a();
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;a=_=>{/*     */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\s)+g,"$0$1"):u)};a();
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;a=_=>{/*      */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\s)+g,"$0$1"):u)};a();
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;a=_=>{/*       */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\s)+g,"$0$1"):u)};a();
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;a=_=>{/*        */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\s)+g,"$0$1"):u)};a();
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;a=_=>{/*         */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\s)+g,"$0$1"):u)};a();
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;a=_=>{/*          */u=";".repeat(82)+"a="+a+";a();";this.t?t+=u:alert(u.length<198?u.replace((\s)+g,"$0$1"):u)};a();

4
यह देखने में सुंदर है।
कॉनर ओ'ब्रायन

4
उन सभी अतिरिक्त अर्धविरामों को केवल यह सुनिश्चित करने के लिए कि प्रोग्राम 2 प्रोग्राम 1 से अधिक लंबा है ...
SuperJedi224

क्या आप शायद कुछ बाइट्स को बचाने के लिए रेगेक्स (\S)+और प्रतिस्थापन $0$1का उपयोग कर सकते हैं ?
मार्टिन एंडर

@ मार्टिनबटनर शायद, मैं आज दोपहर की कोशिश करूँगा
सुपरजेडी 224

2

𝔼𝕊𝕄𝕚𝕟 2, 214 चार्ट / 334 बाइट्स

ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)
 ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)
  ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)
   ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)
    ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)
     ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)
      ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)
       ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)
        ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)
         ℹ)đ ⬭ď9)?ℹ):⬭+ℹ)

Try it here (Firefox only).

व्याख्या

ℹ)                // quine function: get source code
  đ ⬭ď9)          // are there 9 spaces in a row anywhere in the source?
        ?ℹ):      // if so, pass the source itself to implicit output
            ⬭+ℹ) // otherwise, add a leading space to the source and pass to implicit output

कार्यक्रम एक पंक्ति में 9 स्थानों की खोज को गिनता है, जो कि 10 वें कार्यक्रम में अग्रणी स्थानों की मात्रा है। यदि यह एक मिलान पाता है, तो स्रोत कोड आउटपुट होता है; अन्यथा, स्रोत कोड, एक अंतरिक्ष द्वारा नेतृत्व, आउटपुट किया जाता है।


कौन सा एन्कोडिंग आप उपयोग कर रहे हैं? आईएसओ 8859-1 एन्कोडिंग पर 284 बाइट्स लगता है। यहां
डाउनगोट

मैं UTF-8 का उपयोग कर रहा हूं।
मामा फन रोल

मैं भूल गया कि यह ESmin 2 है, इसलिए मैंने "2,214 chars" के रूप में चार गिनती पढ़ी: P
कॉनर ओ'ब्रायन 12
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.