2017 년까지 성장


16

이 도전에서 당신은 그것이 나이가 들어감에 따라 성장하는 프로그램을 만들게 될 것입니다 ... 2017 년까지.

도전

이 과제 설명에 "프로그램"이라고 표시 될 때마다 "기능"을 읽을 수도 있습니다.

제출하면 실행시 THE LENGTH OF YOUR SUBMISSION+ 1바이트 길이 의 프로그램이 출력됩니다 .

프로그램이 실행, 그것은을 출력은 프로그램 THE LENGTH OF YOUR SUBMISSION+는 2긴 ... 등등 바이트.

그러나 프로그램이 2017 바이트 길이에 도달하면 대신 출력 2017하고 종료 해야합니다 .

규칙

  • 최종 프로그램의 출력은 여야 2017합니다 2017. 이 문자열이나 정수가 될 수 있지만 읽을 수 있어야 2017하지 2017.0또는 0x7E1다른 그런 말도 나.
  • 표준 허점이 없습니다 .
  • 초기 프로그램 만이 입력을 요구할 수 있으며, 이는 바이트 수에 추가됩니다.
    초기 프로그램은 324 자이며, 13 바이트의 입력을 받아, 경우에 따라서, 총 점수는 것입니다 324 + 13 = 337 해야 그것에 의해 출력 프로그램 (338) 긴 바이트.
    • perl -X그러나 초기 프로그램과 생성 된 모든 프로그램이 동일한 플래그를 사용하는 한 명령 줄 플래그 (예 :)를 사용하는 것이 좋습니다. 또한 총 바이트 수에도 포함됩니다. 명령 행 플래그 앞의 대시, 슬래시 등은 총계에 포함되지 않으므로 하나의 추가 바이트 perl -X로 계산됩니다 .
  • 함수를 반환하면 실제 함수 여야하며 평가시 함수를 생성하는 문자열이 아닙니다.
  • 부적절한 quines (프로그램이 quine 인 경우)는 허용되지 않습니다.

의사 코드, 99 바이트

IF (PROGRAM LENGTH == 2017)
  PRINT 2017
ELSE
  PRINT (THE SOURCE OF THIS PROGRAM + 1 BYTE PADDING)

위의 규칙을 준수하는 한 제출 내용이 다르게 작동 할 수 있습니다.


;;;허용 된 NOP 만 추가하고 있습니까?
FlipTack

@FlipTack 예.
user2428118

"명령 행 플래그 앞의 대시, 슬래시 등은 총계에 포함되지 않으므로 perl -X는 하나의 추가 바이트로 계산됩니다." -이것은 메타에 기술 된 바와 같이 의도적으로 여기의 표준과 반대 되는가? 일반적으로 해당 옵션이없는 호출의 모양에 따라 대시, 슬래시 등을 계산해야합니다. meta.codegolf.stackexchange.com/questions/273/…
hvd

@hvd 내가 그 책을 읽지 않았다고 생각하기 때문에, 의도적이지 않습니다. 즉, 나는 그들을 무시하는 데 많은 해가 없다고 생각 하므로이 도전으로 변경하지는 않을 것입니다.
user2428118

답변:


6

*> <> , 29 28 30 바이트

" r::2+l'-':*7-(?ul1-n;Ol?!;ou

여기 사용해보십시오! (* 2017 바이트 시도 )
* 지연을 0ms로 설정하거나 오래 기다려야 할 수도 있습니다

이것은 각각의 후속 실행을 추가 합니다. 2017 바이트가 있고 실행되면 2017을 출력하고 다른 출력없이 실행을 중지합니다.

업데이트 : 길이가 같지 않고 2017 미만인지 확인하여 1 바이트를 절약했습니다.

업데이트 2 : +2 바이트에 대한 고정 출력

설명

" r: 2+                         build quine
    :                           copy extra " "
       l                        push length to stack
        '-':*7-                 push "2018" to stack
               (?u     O        if not length < 2018:
                  l1-n;           output length-1 and exit
                       Ol?!;ou  output entire stack and exit

네, when your program has reached a length of 2017 bytes2016 년이 아니라별로 옳지 않습니다
Destructible Lemon

@DestructibleWatermelon 고정
redstarcoder

4

파이썬 2.7, 90 바이트

다음은 비교적 간단한 것입니다.

p='q';s=r"p+='q';print('p=\''+p+'\';s=r\"'+s+'\";exec s')if len(p)<1929 else'2017'";exec s

여기에서 첫 번째 반복을 시도하십시오! 여기서 두 번째 반복을 시도하십시오! 마지막 반복을 시도하십시오!

언 골프 드 :

p='q'      # The length of string p is the number of iterations so far.

s=r"p+='q';print('p=\''+p+'\';s=r\"'+s+'\";exec s')if len(p)<1928 else'2017'"

exec s     # s contains the source code, but also contains a line saying "p += 'q'",
           # which makes the byte count longer. When the length of p is 1928 (i.e. when the
           # entire program is 2017 bytes long), 2017 is printed instead.

@redstarcoder 마지막 ​​반복에는 정확히 2017자가 있습니다. 오른쪽 상단에서 바이트 수를 볼 수 있습니다 ....
Calconym

아 내 실수, 어떻게 된건 지 모르겠어, 미안해!
redstarcoder

p='';...및 을 사용할 수 1929else있지만 인쇄시에도 줄 바꿈이 인쇄되므로 프로그램에 후행 줄 바꿈을 추가해야합니다. 그렇지 않으면 첫 번째 실행 후 2 바이트가 늘어납니다.
mbomb007


1

> <> , 34 바이트

":l' '95**)b*f3++0.1-}'#'r>o<:ln;#

온라인으로 사용해보십시오! 더 작은 값에 대해이를 테스트하려면 값 (빼기 1)을 7 바이트로 생성 할 수 있어야합니다.

설명

":l' '95**)b*f3++0.1-}'#'r>o<:ln;#
".................................   push this string
 :                                   duplicate
  l                                  push length of stack
   ' '95**                           push 2016
          )                          1, if length > 2016, 0 otherwise
           b*                        multiply by 11
             f3++                    add 18
                 0.                  jump to that character on this line
                                     if the length is sufficiently long, this skips the
                                     next 10 characters, to the 11th (`b` from earlier):
                             :ln;    (if length is > 2016)
                             :         duplicate
                              l        push length
                               n       output as number
                                ;      terminate
                   1-}'#'r>o<        (if length <= 2016)
                   1-                  subtract 1 from the last char, `#`, to get `"`,
                     }                 which is then moved to the bottom
                      '#'              pushes `#` (will be appended)
                         r             reverses the stack
                          >o<          output stack, until error (accepted by default)
                                 #   This is never reached, but is used to generate `"`

1

Java, 251 바이트 (Eclipse IDE)

import java.io.*;class G{public static void main(String[]args) throws Exception{File x=new File("./src/G.java");if(x.length()==2017){System.out.print("2017");}else{PrintWriter y=new PrintWriter(new FileOutputStream(x,1>0));y.print("A");y.close();}}}//

이것은 .java작업 디렉토리의 SRC에서 파일 규칙을 사용하여 프로젝트가 Eclipse에서 작성된 것으로 가정합니다 . 출처가 어디인지 감지하는 다른 방법이 있지만 이것이 규칙에 위배된다고 생각하지 않습니다.

기본적으로 .java 소스 코드를 열고 2017까지 (댓글 뒤에) As를 추가합니다. 소스의 파일 크기가 총 2017 바이트에 도달하면 대신 2017이 인쇄됩니다.


1

C, 197 바이트

#define A ""
char*s="#define A %c %s%c%cchar*s=%c%s%c;%cmain(){printf(sizeof A==1820?%c2017%c:s,34,A,34,10,34,s,34,10,34,34);}";
main(){printf(sizeof A==1820?"2017":s,34,A,34,10,34,s,34,10,34,34);}

1

파이썬 (2), 217 (167) 78 바이트

후행 줄 바꿈이 있어야합니다. 나는 Calconym이 사용한 것과 비슷한 개념을 사용 했으므로 영감을 주셔서 감사합니다!

p='q';s='p+=p[0];print"p=%r;s=%r;exec s"%(p,s)if len(p)<1941else 2017';exec s

온라인으로 사용해보십시오

2016에서보십시오 ; 2017 년 시도


이전 버전:

이 프로그램은 inspect모듈을 사용하여 현재 줄 번호를 얻습니다. 그런 다음 가져 오기 후에 추가 행으로 인쇄되어 다음 프로그램의 행 번호가 변경됩니다. 여기에 후행 줄 바꿈이 있어야합니다.

from inspect import*
n=stack()[0][2];s='from inspect import*%sn=stack()[0][2];s=%r;print(s%%(chr(10)*n,s))if n<1852else 2017';print(s%(chr(10)*n,s))if n<1852else 2017

온라인으로 사용해보십시오


1

CJam , 39 33 30 바이트

33q:X~

입력으로

2017:N=N{33')X+`":X~"+}?

온라인으로 사용해보십시오!

이것은 따옴표를 쓰고 이스케이프 할 필요가 없다는 점을 제외하고는 이전 버전과 기능상 동일합니다. 이전 버전 :

33"2017:N=N{33')X+`\":X~\"+}?":X~

어떤 출력

33")2017:N=N{33')X+`\":X~\"+}?":X~

어떤 출력

33"))2017:N=N{33')X+`\":X~\"+}?":X~

등등. 마지막으로, 프로그램

33"))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))2017:N=N{33')X+`\":X~\"+}?":X~

출력 2017.

작동 원리

33      Push 33
  q     Read the input: 2017:N=N{33')X+`":X~"+}?
   :X   Store it in variable X
     ~  Eval it

그러나 입력의 코드는 실제로 무엇을합니까?

 2017:N                      Push 2017 and store it in N
       =                     Check if the other number (33 on first run) equals 2017
        N                     If it does, push 2017
         {                    Else, execute this block:
          33                   Push 33
            ')                 Push the ) character
              X                Push X
               +               Concatenate with ')
                `              String representation (wraps it in quotes, escapes quotes inside)
                 ":X~"       Push the string ":X~"
                      +      Concatenate
                       }?    (end of block)

프로그램의 첫 번째 숫자가 2017이 아닌 경우 해당 숫자가 이번보다 한 번 더 증가하는 프로그램을 출력합니다. 2017과 같으면 (즉, 1984 배 증가한 경우) 간단히 2017을 누르고 종료합니다. 첫 번째 숫자는 33 (코드 길이)으로 시작합니다. 증가 할 때마다 코드 길이가 1 씩 증가하고 숫자는 1 씩 증가하므로 33이 2017이 될 정도로 증가하면 코드 길이는 2017 바이트가됩니다.


0

자바 스크립트, 98 83 바이트

그것은 매우 도전적인 일이었습니다. 그게 함수의 소스뿐만 아니라 실제 함수를 반환하도록 요구하는 것 같아요.

원래 기능

function x(){return "3".length>1933?2017:Function(`return ${x}`.replace(/3/,33))()}

후자는 명명 된 함수를 지원하지 않고 익명 함수를 변수에 할당하기 때문에 여기서 function대신 사용 =>하고 있습니다.

첫 번째 반복

브라우저 콘솔에서 위를 실행하면 문자열로 캐스팅 할 때 다음과 같은 함수가 반환됩니다.

function x(){return "33".length>1933?2017:Function(`return ${x}`.replace(/3/,33))()}

2017 년

모든 함수는 새로운 함수를 반환하기 때문에 원래 함수 / 결과를 1934 번 호출하여 2017 을 얻을 수 있습니다.

console.log((
function x(){return "3".length>1933?2017:Function(`return ${x}`.replace(/3/,33))()}
)()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()
)

Firefox에서 테스트했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.