বর্ধমান কুইন সিকোয়েন্স


18

আপনাকে 10 টি প্রোগ্রামের ক্রম লিখতে হবে p1 p2 ... p10যা নিম্নলিখিত বৈশিষ্ট্যগুলিকে সন্তুষ্ট করে:

  • pKকপি করে প্রিন্ট pK+1এর জন্য Kথেকে 1 9
  • p10 কপি করে প্রিন্ট p10
  • যখন প্রথম Kপ্রোগ্রামগুলি সংক্ষিপ্ত করা হয়, ফলস্বরূপ প্রোগ্রামগুলি p1...pKমুদ্রণ করে p1...pK
  • প্রতিটি প্রোগ্রাম pKঅবশ্যই আগের প্রোগ্রামের তুলনায় বাইট আকারে বড় হতে হবে pK-1
  • সমস্ত প্রোগ্রাম একই ভাষা হতে হবে।
  • বিল্ট-ইন কুইনিং ফাংশনগুলি (যেমন Qঅনেক ভাষায়) অনুমোদিত।

আপনার স্কোর 10 টি প্রোগ্রামের বাইট গণনার সমষ্টি। যেহেতু কেবলমাত্র দশটি প্রোগ্রাম রয়েছে তাই আপনার কোডগুলি যথাসম্ভব সংক্ষিপ্ত করে তুলতে হবে। শুভকামনা।


"প্রতিটি প্রোগ্রাম পিকে অবশ্যই আগের প্রোগ্রাম পিকে -১ এর চেয়ে বাইট আকারে বড় হতে হবে" - হু, কেন এই অদ্ভুত প্রয়োজনীয়তা?
নিকেল 21

6
@ এনিকায়েল কারণ এটি ক্রমবর্ধমান কুইন ক্রম।
কনর ও'ব্রায়ান

কেন পি 10 নিজেই মুদ্রণ করে এবং পি 11 নয়? যা সমস্যাটিকে কিছুটা শক্ত করে তোলে।
সুপারজেডি ২৪

@ SuperJedi224 কারণ কেবল কোনও পি 11 নেই।
কনর ও'ব্রায়ান

যদি বিল্ট-ইন কুইনিং কার্যগুলি নিষিদ্ধ করা হত তবে এই চ্যালেঞ্জটি আরও অনেক আকর্ষণীয় হত।
ডেনিস

উত্তর:


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.









অদৃশ্য অক্ষর রয়েছে যা কার্যকর করা হলে দৃশ্যমান হয়ে যায়, বাইট 7 এফের এক অদ্ভুত সম্পত্তি। প্রতিটি প্রোগ্রামের পিছনে থাকা নিউলাইনগুলি তাৎপর্যপূর্ণ। আসলে, সিরিয়াসলি স্বয়ংক্রিয়ভাবে তার আউটপুটে নতুন লাইন যুক্ত হয় আপনি এটি চান কিনা তা চান না। এটি কেবল আউটপুটে নতুন লাইনের সংখ্যা গণনা করে এবং যত তাড়াতাড়ি এই সংখ্যাটি 8 ছাড়িয়ে যায়, এটি আউটপুটের শেষ চরিত্রটিকে মুছে দেয়। যেমন, সমস্ত কে> 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 বাইট
দীর্ঘের

এই চ্যালেঞ্জের জন্য বিল্ট-ইন কুইনিং কার্যগুলি অনুমোদিত allowed
কনর ও ব্রায়ান

9

জাভাস্ক্রিপ্ট (ES6), 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 ​​টি প্রোগ্রামের উপর নির্ভর করে না fact বাস্তবে, আমি মনে করি এটি দুটি বা ততোধিক প্রোগ্রামের সংমিশ্রনের জন্য একটি কোয়াইন।

দাবি অস্বীকার: এখনই সত্যিই দেরি হয়ে গেছে, সুতরাং উপরের সমস্ত কিছু পুরোপুরি ভুল হতে পারে।


alertফাংশন আউটপুট করার কারণে আপনার প্রয়োজন হবে বলে আমি মনে করি না ।
মামা ফান রোল

ওহ, আমি কিছুই মনে করি না।
মামা ফান রোল

আপনি 20 টি বাইট সংরক্ষণ করে আপনি পেছনের সেমিকোলনগুলি বের করতে পারেন। (ভিতরেও টেমপ্লেট স্ট্রিংটি আপডেট করার বিষয়টি নিশ্চিত করুন))
মামা ফান রোল

1
@ ՊՓԼՃՐՊՃՈԲՍԼ আমি মনে করি সেমিকোলনগুলি সংক্ষিপ্তকরণের জন্য প্রয়োজন, যেহেতু আমি আসলে নতুন লাইনগুলি অন্তর্ভুক্ত করছি না।
grc

আবার কিছু মনে নেই।
মামা ফান রোল

9

জাভাস্ক্রিপ্ট ES6, 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 টি প্রোগ্রামের চেয়ে 2 টি দীর্ঘতর হবে তা নিশ্চিত করার জন্য এই সমস্ত অতিরিক্ত
আধাবিধি

আপনি সম্ভবত কিছু বাইট সংরক্ষণ করতে রেগেক্স (\S)+এবং বিকল্প ব্যবহার করতে পারেন $0$1?
মার্টিন এেন্ডার

@ মার্টিনব্যাটনার সম্ভবত, আমি আজ বিকেলে চেষ্টা করব
সুপারজেডি ২৪

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 বাইট বলে মনে হচ্ছে। এখানে
ডাউনগোট

আমি ইউটিএফ -8 ব্যবহার করছি।
মামা ফান রোল

আমি ভুলে গিয়েছিলাম যে এটি ইএসমিন 2, সুতরাং আমি চর গণনাটি "2,214 চর" হিসাবে পড়েছি: পি
কনর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.