이 128 개 언어 퀴 노우로 보로스 (다른 언어로 프로그램을 출력하는 프로그램, 또 다른 언어로 프로그램을 출력하는 프로그램 (125 개 언어), 원래 프로그램을 출력하는 프로그램)는 매우 인상적입니다. 그러나 불행히도 정적 반복 횟수가 있습니다.
프로그램을 출력하는 프로그램 (다른 언어로 번역 할 필요는 없지만 가능할 수 있음)을 작성하는 프로그램을 작성하십시오. 프로그램을 출력하고 프로그램을 출력하는 등의 작업이 반복 된 후 처음으로 원래 프로그램 을 출력합니다 (즉, 중간체 없음). 프로그램은 원본과 동일해야합니다. 그렇지 않으면 입력을 무시하는 quine이 작동합니다.) 여기서 n은 입력으로 제공된 음이 아닌 정수입니다. 입력은 원래 소스 코드의 숫자 일 수 없으며 (예 : x = <the value of n>
프로그램 시작시) 다음 중 하나 여야합니다.
- 명령 줄 인수로 전달
- 표준 입력에서 읽기
- 새 프로그램을 반환 / 출력하는 함수에 인수로 전달됩니다.
우로 보로스의 중간 단계의 경우 프로그램은 완전한 기능을하는 프로그램이거나 인수가없는 함수일 수 있습니다.이 함수는 호출되면 다음 프로그램을 반환 / 출력합니다.
소스 파일 자체를 읽거나 quine과 같은 내장을 사용할 수는 없습니다 (이 작업을 수행 할 수있는 방법은 없다고 생각합니다)
명확히하려면 n = 0
프로그램이 자체 소스 코드를 출력해야합니다.
인 경우 n = 1
프로그램은 다른 프로그램을 출력해야합니다. 그러면 원래 소스 코드가 출력됩니다.
등등...
가장 적은 바이트가 이깁니다!
편집하다:
"우로 보로스의 중간 단계에서 프로그램은 입력이없는 완전한 기능을하는 프로그램 이거나 인수가없는 함수일 수 있습니다." 프로그램이 체인에서 다음 것을 출력하면 입력 을 기다립니다. 괜찮지 만 프로그램은 원래 값 n을 필요로하지 않습니다.
getInput()
것이 사용되는 경우 처리해야한다고 생각합니다 . 또는 나중에 반복에 사용되지 않는 임의의 것을 입력하여 getInput()
? 일명 현재 파이썬 답변이 유효합니까?
n
ouroboros quine n
반복 의 "초기 프로그램"인 프로그램을 출력 하고 우리의 대답이 n
반복 중 하나로 간주되어서는 안된다고 생각합니다 . 이 올바른지?