태그 보관물: self-referential

self-referential

코드와 길이가 같은 출력 출력 할 수 있습니다. 코드는 quine이 아니어야하며 코드와

이 문제에서는 입력을받지 않고 프로그램 자체와 동일한 바이트 수의 문자열을 인쇄하거나 반환하는 프로그램이나 함수를 작성해야합니다. 몇 가지 규칙이 있습니다.

  • 인쇄 가능한 ASCII 범위 (0x20 ~ 0x7E 포함) 또는 줄 바꿈 (0x0A 또는 0x0D)의 바이트 만 출력 할 수 있습니다.
  • 코드는 quine이 아니어야하며 코드와 출력은 1 바이트 이상 달라야합니다.
  • 코드는 1 바이트 이상이어야합니다.
  • 출력에 후행 줄 바꿈이 있으면 바이트 수의 일부입니다.
  • 코드에 비표준 명령 줄 플래그가 필요한 경우 평소와 같이 계산합니다 (예 : 언어 구현의 표준 호출에 대한 차이를 바이트 수에 추가하여). 출력 길이는 솔루션의 점수와 일치해야합니다. 예를 들어 프로그램이 ab비표준 플래그를 필요로하는 경우 -n(표준 플래그와 결합 할 수 없다고 가정하므로 3 바이트 임) 총 5 바이트를 출력해야합니다.
  • 가능한 모든 출력이 위의 요구 사항을 충족한다는 것을 보여줄 수 있다면 출력이 항상 같을 필요는 없습니다.
  • 일반적인 퀴니 규칙 적용 되지 않습니다 . 소스 코드 나 크기를 읽을 수 있지만 대부분의 언어로 하드 코딩하는 것보다 짧을 것입니다.

당신은 쓸 수 있습니다 프로그램이나 기능 과의 사용 표준 방법 출력을 제공합니다. 결과를 인쇄하는 경우 표준 출력 또는 표준 오류 스트림으로 인쇄하도록 선택할 수 있지만 그 중 하나만 계산됩니다.

모든 프로그래밍 언어를 사용할 수 있지만 이러한 허점 은 기본적으로 금지되어 있습니다.

이것은 이므로 바이트 단위로 측정 된 가장 짧은 유효한 답변이 이깁니다.

리더 보드



답변

C (현대 리눅스), 19 바이트

main(){puts('s');}

컴파일하고 실행하면 다음이 인쇄됩니다.

Segmentation fault


답변

엑셀, 11 바이트

노르웨이어 버전 :

=SMÅ(13^9)

영어 버전 (12 바이트) :

=LOWER(17^9)

n 자리 숫자를 생성하고 소문자로 변환하여 텍스트로 변환합니다.


답변

미로 , 4 바이트

!!>@

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

인쇄물 0000

설명

!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
>   Rotate the source code right by one cell, so the code now becomes

    @!!>

    The IP is moved along, so it's now at the end of the line, which is
    a dead end. So the IP turns around and starts moving left.
!   Print an implicit 0 from the stack.
!   Print an implicit 0 from the stack.
@   Terminate the program.


답변

배쉬 (내장 전용), 8 바이트

{e,,}cho

인쇄 cho cho및 개행.


답변

망막 , 2 바이트

no

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

인쇄 0및 줄 바꿈.

2 바이트 솔루션이 많이 있지만 이것이 최적이라고 생각합니다. Retina는 기본적으로 항상 후행 줄 바꿈을 인쇄하고 제거하는 데 너무 많은 바이트가 필요합니다. 따라서 빈 입력을 변경하지 않은 1 바이트 프로그램을 찾아야합니다. 이 작업을 수행하는 유일한 프로그램은 단일 줄 바꿈을 포함하는 프로그램이므로 출력과 같으므로 챌린지에서 허용하지 않습니다.

다음으로해야 할 가장 간단한 일은 Retina를 사용하여 단일 숫자 (빈 입력에 대한 일부 정규 표현식의 일치 수)를 출력하는 것이며, 많은 실패 (또는 일치) 2 바이트 패턴으로이를 수행 할 수 있습니다.


답변

수학, 2 바이트

4!

계승

24


답변

C, 20 바이트

f(){printf("%20d");}

공백으로 채워진 20의 길이로 일부 숫자를 출력합니다. (어떤 숫자? 메모리에서 다음에 오는 것은 무엇입니까?)

일부 샘플은 내 시스템에서 실행됩니다.

llama@llama:...code/c/ppcg121056samelen$ ./a.out
           -666605944
llama@llama:...code/c/ppcg121056samelen$ ./a.out
          -1391039592
llama@llama:...code/c/ppcg121056samelen$ ./a.out
           1727404696
llama@llama:...code/c/ppcg121056samelen$ ./a.out
             10717352
llama@llama:...code/c/ppcg121056samelen$ ./a.out
           1485936232

이 19 바이트 솔루션을 허용했기 때문에 출력이 임의의 바이트가 될 수 없다는 것은 부끄러운 일입니다.

f(){write(1,f,19);}

f주소 에서 시작하여 19 바이트의 정크를 출력 합니다.