성장하는 퀸 시퀀스


18

p1 p2 ... p10다음 특성을 만족하는 10 개의 프로그램 시퀀스를 작성해야 합니다.

  • pK지문 pK+1K에서 1~9
  • p10 인쇄물 p10
  • 첫 번째 K프로그램이 연결되면 결과 프로그램이 p1...pK인쇄 p1...pK됩니다.
  • 각 프로그램 pK은 이전 프로그램보다 바이트 크기가 커야합니다 pK-1.
  • 모든 프로그램은 동일한 언어로되어 있어야합니다.
  • 내장 된 quining 기능 (예 : Q여러 언어)이 허용됩니다.

당신의 점수는 10 프로그램의 바이트 수의 합입니다. 프로그램은 10 개뿐이므로 코드를 최대한 짧게 만들어야합니다. 행운을 빕니다.


"각 프로그램 pK는 이전 프로그램 pK-1보다 바이트 크기가 더 커야합니다."-왜이 이상한 요구가 있습니까?
nicael

6
@nicael @ quine 시퀀스 가 커지기 때문 입니다.
코너 O'Brien

p10이 아닌 p10이 왜 인쇄됩니까? 그것은 문제를 조금 더 어렵게 만듭니다.
SuperJedi224

@ SuperJedi224 단순히 p11이 없기 때문입니다.
Conor O'Brien

내장 된 quining 기능이 금지 되었다면이 도전은 훨씬 더 흥미 로웠을 것입니다.
Dennis

답변:


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의 이상한 특성 인 실행시 표시되는 보이지 않는 문자가 있습니다. 각 프로그램의 마지막 줄 바꿈이 중요합니다. 실제로, 심각도는 자동으로 개행을 원하는지 여부에 관계없이 출력에 자동으로 추가합니다. 이것은 출력에서 ​​줄 바꿈 수를 계산하고 그 수가 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
흥미 롭습니다! 실제로 가능합니다.
코너 O'Brien

7
내가 숯불 각 숯불 구이를 설명 할 수 있을까
Seadrus

3
이것은 Q프로그램의 소스 코드를 푸시하는 quining 내장 기능을 사용한다는 점에 유의해야합니다 .
마틴 엔더

(또한 내장 길이가 없으면 전체 길이가 150 바이트 정도 더 길어질 수 있다는 점도 언급했다.)
Quintopia

내장 된 quining 기능이이 과제에 허용됩니다.
코너 O'Brien

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에 의존하지 않습니다. 사실, 둘 이상의 연결된 프로그램의 조합에 대한 퀴인이라고 생각합니다.

면책 조항 : 지금은 정말 늦어서 위의 모든 것이 완전히 잘못 될 수 있습니다.


alert함수 출력으로 인해 필요하다고 생각하지 않습니다 .
Mama Fun Roll

오 알겠습니다.
Mama Fun Roll

세미콜론을 제거하여 20 바이트를 절약 할 수 있습니다. (내부에서도 템플릿 문자열을 업데이트해야합니다.)
Mama Fun Roll

1
@ ՊՓԼՃՐՊՃՈԲՍԼ 실제로 줄 바꿈을 포함하지 않기 때문에 세미콜론이 연결에 필요하다고 생각합니다.
grc

그런 다음 다시 신경 쓰지 마십시오.
Mama Fun Roll

9

자바 스크립트 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
보기에 아름답습니다.
Conor O'Brien

4
프로그램 2가 프로그램 1보다 길다는 것을 보장하기위한 모든 추가 세미콜론 ...
SuperJedi224

정규식 (\S)+과 대체 $0$1를 사용하여 바이트를 절약 할 수 있습니까?
Martin Ender

@ 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을 사용하고 있습니다.
Mama Fun Roll

ESmin 2라는 것을 잊었으므로 문자 수를 "2,214 자"로 읽었습니다. P
Conor O'Brien
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.