成長するクインシーケンス


18

p1 p2 ... p10以下の特性を満たす10個のプログラムのシーケンスを作成します。

  • pK印刷pK+1のためのK1から9まで
  • p10 プリント p10
  • 最初のKプログラムが連結されると、結果のプログラムがp1...pK印刷されp1...pKます。
  • 各プログラムpKは、前のプログラムよりもバイトサイズが大きくなければなりませんpK-1
  • すべてのプログラムは同じ言語である必要があります。
  • 組み込みのクイニング機能(Q多くの言語など)が許可されています。

スコアは、10個のプログラムのバイトカウントの合計です。プログラムは10個しかないため、コードはできるだけ短くする必要があります。幸運を。


「各プログラムpKは、以前のプログラムpK-1よりもバイトサイズが大きくなければなりません」-なぜ、この奇妙な要件なのでしょうか?
ニカエル

6
@nicaelそれは、成長し続けるクインシーケンスだからです。
コナーオブライエン

p10ではなくp10が印刷されるのはなぜですか?それは問題を少し難しくします。
SuperJedi224

@ SuperJedi224なぜなら、単にp11がないからです。
コナーオブライエン

組み込みのクイニング機能が禁止されていた場合、この課題はもっと面白かったでしょう。
デニス

回答:


15

真剣に、245バイト:

連結された10個のプログラムすべて:

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の奇妙なプロパティです。各プログラムの末尾の改行は重要です。実際、必要に応じて、出力に改行が真剣に自動的に追加されます。これは、出力内の改行の数をカウントするだけで、その数が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
Leik wat各char duz
Seadrus

3
これはQ、プログラムのソースコードをプッシュするquiningビルトインを使用することに注意してください。
マーティンエンダー

(さらに、上記の組み込みなしでは、全長が150バイト近く長くなることに
注意

この課題には、ビルトインのクイニング機能が許可されています。
コナーオブライエン

9

JavaScript(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に依存しません。実際、2つ以上の連結されたプログラムの任意の組み合わせのキインだと思います。

免責事項:今は本当に遅いので、上記のすべてが完全に間違っている可能性があります。


alert関数の出力のために必要とは思わない。
ママファンロール

ああ、わかりました。
ママファンロール

末尾のセミコロンを削除して、20バイト節約できます。(テンプレート文字列も必ず更新してください。)
ママファンロール

1
@ՊՓԼՃՐՊՃՈԲՍԼ実際には改行を含めないので、連結にはセミコロンが必要だと思います。
-grc

二度と気にしません。
ママファンロール

9

Javascript ES6、1935バイト

10プログラム:

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を使用して、いくつかのバイトを節約できますか?
マーティンエンダー

@MartinBüttnerおそらく、今日の午後
-SuperJedi224

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

プログラムは、10番目のプログラムの先頭のスペースの量である、連続する9つのスペースの検索をカウントします。一致するものが見つかると、ソースコードが出力されます。それ以外の場合は、スペースで始まるソースコードが出力されます。


どのエンコーディングを使用していますか?ISO 8859-1エンコーディングでは284バイトのようです。ここで
Downgoat

UTF-8を使用しています。
ママファンロール

私は「2,214文字」としてchar型の数を読んので、私は、それはESmin 2だと忘れてしまった:P
コナー・オブライエン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.