당신이이 개 언어를 가지고, 가정 A
및 B
. 문자열 s
의 semiquine입니다 A
및 B
다음과 같은 조건이 만족되는 경우 :
s
언어의 quine입니다A
.s
A
및 의 폴리 글 로트입니다B
.- 실행의 출력
s
A와B
프로그램을 다른 문자열s'
에 quine이다B
.
이 과제의 목표는 두 가지 다른 언어로 세미 퀸을 작성하는 것입니다. 이것은 code-golf 이므로 가장 짧은 코드가 승리하며 가장 빠른 답변은 순위 결정 도구로 사용됩니다.
Quines에 대한 규칙
만 사실 quines 허용됩니다. 즉, 당신은 STDOUT에 그대로 전체 소스 코드를 인쇄 할 필요 없이 :
- 직접 또는 간접적으로 소스 코드를 읽습니다.
- 단순히 먹이를주는 모든 표현을 평가하고 인쇄하는 REPL 환경에 의존합니다.
- 어떤 경우에는 소스를 인쇄하는 언어 기능에 의존합니다.
- 오류 메시지 또는 STDERR을 사용하여 quine의 일부 또는 전부를 쓰십시오. STDOUT이 유효한 quine이고 오류 메시지가 포함되지 않는 한 STDERR에 내용을 쓰거나 경고 / 치명적이지 않은 오류가 발생할 수 있습니다.
또한 소스 코드는 순전히 리터럴 (문자열 리터럴, 숫자 리터럴 등) 및 / 또는 NOP로 구성되어서는 안됩니다. 예를 들어, `12
Jelly와 Pyth의 폴리 글 로트이지만 Jelly에서는 NOP와 숫자 리터럴이므로 유효하지 않습니다.
quine의 유효성을 위해 출력에서 억제 할 수없는 출력 (예 : 저작권 표시, 시작 / 종료 메시지 또는 후행 줄 바꿈)이 무시 될 수 있습니다.
폴리 글 로트 규칙
사용 된 두 언어는 분명히 달라야합니다. 특히:
- 같은 언어의 다른 버전이 아니어야합니다 (예 : Python 2와 Python 3).
- 같은 언어의 다른 방언이어서는 안됩니다 (예 : Pascal vs. Delphi).
- 한 언어는 다른 언어의 하위 집합이 아닐 수 있습니다 (예 : C vs. C ++ 1 ).
- 한 언어는 다른 언어의 사소한 파생물이 아닐 수 있습니다 (예 : Matlab vs. Octave 2 , brainfuck vs boolfuck vs TinyBF vs ShadyAsFuck vs 기타 사소한 brainfuck 파생물).
기타 규칙
- STDIN (또는 다른 소스)의 입력을 수락 할 수 없습니다. 선택한 언어 가 입력을 받아야하는 경우 입력이 비어 있거나 (빈 문자열, 파이프
/dev/null
등) 프로그램의 출력이 입력에 의존해서는 안됩니다. - 이 도전을 위해서는 완전한 프로그램을 작성해야합니다. 솔루션을 실행하기 위해 추가 코드를 요구하는 것은 허용되지 않습니다 (예 : 솔루션에 정의 된 람다 함수 할당 및 호출).
1 : 예 C는 실제로 C ++의 하위 집합이 아니라는 것을 알고 있습니다. 그러나 폴리 글 로트의 목적을 위해 하나라고 생각하기에 충분히 가까우므로이 과제를 위해 세고 있습니다.
2 : 위의 1 지점과 마찬가지로 Octave는 기술적으로 Matlab과 100 % 호환되지 않지만 Matlab / Octave 폴리 글 로트를 허용하면 문제를 쉽게 해결할 수있을 정도로 가깝습니다.