7 , 10 바이트, 27 자
115160723426754314105574033
온라인으로 사용해보십시오!
디스크에서이 프로그램의 압축 표현은 ( xxd형식)입니다.
00000000: 269c 3a71 6f63 308b 7c0d &.:qoc0.|.
설명
우리는 Automate Saving the World 에서이 일련의 숫자를 보았습니다.이 숫자는 규칙적인 간격으로 숫자를 인쇄하여 매우 오래된 언어를 사용하여 흥미롭게 만듭니다. 하지만 훨씬 더 새로운 언어에는 고유 한 언어가있어이 문제를 흥미롭게 만듭니다. (예,이 단락과 실제로이 답변을 작성하기 시작한 이유는 사실상 모든 관련 과제를 사이드 바에 함께 표시하는 방법 일뿐입니다. 일반적으로 사람들은 의견을 사용하여 답변하지만 충분한 담당자가 없습니다. .)
가장 먼저 주목할 점은 7은 완전히 숫자로 구성되어 있기 때문에 보너스를 얻는 것은 효과가 없을 것입니다 (프로그램을 일련의 8 진수로 보더라도 원래 숫자의 ASCII 표현에 해당하는 것은 없습니다) 그런 의미에서 보너스를 청구 할 수 있습니다). 다음으로 주목해야 할 것은 7은 특정 데이터 조각을 생성했을 가능성이있는 명령 시퀀스를 재생성하는 명령을 가지고 있다는 것입니다. 잃어버린 숫자 4815162342를 7 프로그램 자체의 섹션으로 해석 할 수 있습니까?
대답은 "정확하지 않다"입니다. 가장 문제가되는 부분은 그 두 번째 숫자 8입니다. 7 개의 프로그램이 8 진수로 작성되었습니다. 8과 같은 숫자는 없습니다. 따라서 문자열의 시작 부분은 다르게 인쇄되어야합니다.
따라서 프로그램의 기본은 7 가지 "Hello world"프로그램을 기반으로합니다.
5431410557403
543141055 string literal
7 separate data from code
4 rearrange stack: {program's source}, empty element, {literal}
0 escape {the literal}, appending it to {the empty element}
3 output {the escaped literal}, pop {the program's source}
이스케이프 된 리터럴은 다음과 같이 해석되는 도메인 별 언어로되어 있습니다.
5 output format: US-TTY using pairs of digits in the string
43 select character set: digits and common symbols
14 "4"
10 "8"
55 forget the set output format
그 후에 여분의 3스택 요소가 출력되고 남은 스택이 부족하여 종료됩니다. 이 요소는 프로그램 시작시 지정되며 일치하지 않는 항목 6(닫는 대괄호처럼 작동 함) 을 피하기 위해 데이터로 직접 작성하지 않고 코드를 사용하여 생성합니다. ( 7프로그램 시작시 여기에 관련된 두 개의 암시 적 문자가 있습니다.)
{77}115160723426
7 empty stack element
7 11516 append "1151"
0 append "6"
723246 append "2324"
다음과 같은 리터럴을 생성합니다.
115162324
1 set output format: literally as octal
15162324 "15162324"
인쇄됩니다.