이 과제는 Can You Meta Quine 과 비슷합니다 .
quine은 STDOUT에서 자체적으로 생성되는 프로그램입니다. 이 문제는 실행할 때 STDOUT에서 프로그램 B를 생성하는 프로그램 A를 생성하는 것입니다. 실행시 프로그램 B는 STDOUT에서 프로그램 A를 생성합니다. 프로그램 A와 B는 같은 언어로 작성되고 실행되어야합니다. 관련 질문은 A! = B를 제한했습니다. 너무 쉬워 보였습니다. 따라서이 질문에 대해 다음 규칙을 사용하여 A와 B가 앤티 퀸이라고 주장합니다.
- 프로그램 A와 B는 같은 문자를 사용하거나 공백 및 명령문 구분 기호 및 문장 부호 문자를 저장할 수 없습니다.
- 프로그램 A와 B는 각각 공백이나 문장 구분 기호 또는 문장 부호 문자가 아닌 문자를 하나 이상 포함해야합니다.
- 규칙 1과 2의 목적 상 '공백'이라는 용어는 그 자체로 해석되는 문장, 연산자 또는 기호 인 기호 또는 기호 시퀀스를 제외합니다 (구분 기호와 반대). 따라서 공백 언어에는 공백이 없습니다.
- 문장 구분자는 문장 내에서 문장을 분리하기 위해 일반적으로 사용되는 구문 요소입니다. 여기에는 파이썬의 줄 바꿈 또는 Java, perl 또는 C의 세미콜론이 포함됩니다.
- 문장 부호 문자는 공백이나 POSIX 단어 문자 클래스가 아닌 ASCII 문자입니다 (즉, 밑줄은이 목적을 위해 문장 부호가 아닙니다). 즉
ispunct()
, true를 반환하지만 그렇지 않습니다_
. - 실행될 때 프로그램 A는 STDOUT에 프로그램 (프로그램 B)을 생성해야하며, 차례로 실행되면 프로그램 A가 생성됩니다.
- 프로그램 A와 B는 동일한 프로그래밍 언어로되어 있어야합니다.
- 사용 된 프로그래밍 언어는 실제로 프로그래밍 언어 여야합니다. 다른 경우를 제외하고는 튜링이 완료되어야한다고 제안합니다.
- A 및 B 중 하나 이상이 언어 내에서 하나 이상의 문을 실행해야합니다.
이것은 코드 골프이므로 가장 짧은 답이 이기고 점수는 프로그램 A의 길이 (바이트)입니다 (즉, 프로그램 B의 길이는 관련이 없음).
첫 번째 절의 예외 목록에 "punctuation"을 추가 할 수 있습니까? 그렇지 않으면 여러 언어로 (특히 주 함수에서 중괄호가 필요한 언어)이 작업을 해결할 수 없습니다.
—
FUZxxl
관련되어 있지만 아마도 충분히 다를 수 있습니다.
—
Martin Ender
@FUZxxl 구두점은 허용했지만 밑줄은 제외했습니다.
—
abligh
여기에 목적입니다
—
HostileFork은 그나마 신뢰 SE 말한다
A
및 a
"문자"다른 생각?
당신이 경기 규칙 5. 것으로 ASCII 문자의 전체 목록을 제공하면 좋을 것
—
aditsu 종료를 SE 악이기 때문에