도전
이 과제에서는 소스 언어 S
와 대상 언어 를 지정합니다 T
. 당신의 임무는 P
언어로 다음 프로그램을 작성하는 것 S
입니다. Q
언어로 된 유효한 프로그램이 에 대한 T
입력으로 제공 P
되면 입력 및 출력을받지 않는 R
언어로 T
된 유효한 프로그램 Q(R)
, 즉 Q
의 소스 코드에 적용된 프로그램이 출력 됩니다 R
. 또한 답안으로 사소한 예제 프로그램 Q
(더 흥미롭고 더 나은 점수를 얻지 만 더 우수합니다), 결과 프로그램 R
및의 결과를 제시해야 R
합니다. 이것은 코드 골프이므로 P
승리를 위한 가장 짧은 코드입니다 .
다시 말해, 이것은 임의의 유형의 일반화 된 퀴를 생성 할 수있는 "유니버설 퀴 생성자"를 작성하는 것에 대한 도전입니다.
설명
- 소스 언어와 대상 언어가 동일 할 수 있습니다.
- 프로그램
P
은 모든 출력 프로그램에서와 같이 하나의 문자열을 입력 (STDIN 또는 이와 동등한 것)으로, 하나의 문자열 (STDOUT 또는 동등한 것)을 출력해야합니다R
. - 입력 프로그램
Q
도 문자열을 다른 문자열로 변환해야하지만 형식이 더 유연합니다. 문자열 대 문자열 함수, 특정 이름으로 변수를 수정하는 코드 스 니펫, 대상 언어 인 경우 데이터 스택을 수정하는 스니 펫일 수 있습니다.Q
예를 들어 주석이 포함되어 있지 않을 수도 있음을 명시 하여의 형식을 추가로 제한 할 수 있습니다 . 그러나 계산 가능한 문자열 대 문자열 함수를 입력 프로그램으로 구현할 수 있어야하며Q
, 함수가 작동하는 방식과 추가 제약 조건을 명시 적으로 명시 해야 합니다. - 출력 프로그램
R
은 실제로 (일반화 된) 퀴인이어야하며, 그렇지 않으면 입력 (사용자 입력, 파일 등)을 읽지 않아야합니다Q
. - 표준 허점 은 허용되지 않습니다.
예
소스 언어로 Python을 선택하고 대상 언어로 Haskell을 선택하고 입력 프로그램 String -> String
이라는 함수 의 한 줄 정의 여야한다고 가정합니다 f
. 문자열 역전 프로그램을 주면
f x = reverse x
내 파이썬 프로그램에 대한 입력으로 P
다른 Haskell 프로그램의 소스 코드를 출력합니다 R
. 이 프로그램은의 소스 코드를 STDOUT에 인쇄 R
하지만 반전됩니다. 경우 P
신원 기능을 부여
f x = x
입력으로, 출력 프로그램 R
은 quine입니다.