폴리 글 로트는 여러 프로그래밍 언어에서 동시에 유효한 프로그램입니다. 이러한 폴리 글 로트 대부분은 한 언어의 특정 구문이 다른 언어의 주석으로 해석되는 방식으로 작성됩니다 (예 : #define
C에서 여러 스크립팅 언어의 주석으로 해석 됨).
주석이 포함되지 않은 사소한 폴리 글 로트를 만들 수 있는지 여부가 궁금하지만 공백이 아닌 문자를 제거하면 즉시 변경되므로 이러한 프로그램을 제안해야합니다.
구체적인 규칙은 다음과 같습니다.
- (산출). 프로그램은 콘솔에서 각 언어로 출력해야합니다. 즉, 프로그램은 아무 것도 인쇄하지 않고 단순히 종료 할 수 없습니다.
- (변화). 표준 폴리 글 로트 정의가 완화됨에 따라 프로그램의 출력은 언어마다 다를 수 있습니다.
- (오류). 귀하의 프로그램은 귀하의 언어 하에서 어떠한 오류 (광의로 정의 된)를 생성해서는 안됩니다. 대부분의 언어에서 이는 컴파일러 및 / 또는 인터프리터에서 0이 아닌 종료 코드를 반환하는 것으로 정의됩니다.
- (제한). 코드에서 단일 공백이 아닌 문자의 제거는 아래의 동작을 변경하는 프로그램 야기한다 모든 당신의 언어 중 하나를. 프로그램은 해당 언어에 대해 유효하지 않거나 생성 된 출력을 변경하여 "변경"할 수 있습니다.
- 이것은 코드 도전 이다. 승자는 대부분의 프로그래밍 언어에서 유효한 프로그램입니다. 프로그램 길이가 짧아지면 타이가 끊어집니다.
제한 규칙은 여러 문자를 제거 할 때는 적용되지 않습니다. 즉, 여러 문자를 동시에 제거해도 언어 중 하나가 변경되지 않는 것이 좋습니다.
공백이 아닌 문자를 제거해도 공백 프로그램의 동작이 변경되지 않으므로 제한 규칙에서 공백을 언어 중 하나로 사용할 수 없음을 의미합니다.
다음은 Python 2 및 Python 3 언어에 대한 위의 모든 제한 사항을 충족시키는 프로그램의 간단한 예입니다.
print("Hello World!")
문자를 제거 print
하면 두 언어 모두에서 NameError
; 대괄호 또는 따옴표를 SyntaxError
제거하면을 발생시키고 문자열 문자를 제거하면 두 언어로 출력이 변경됩니다. ( print("hello", "world")
위의 규칙에 따라 더 미묘하지만 여전히 유효한 프로그램입니다).
이 예제는 Python 2와 Python 3이 매우 유사하기 때문에 약간 불충분하므로 동일한 언어의 다른 버전 (특히 Python 2 및 Python 3) 만 사용하는 다른 솔루션은 허용하지 않습니다.
print("Hello World!")
유효한 루비 코드입니다