일반적으로 폴리 글 로트는 각 언어가 다른 언어에 대해 존재하는 코드의 일부를 문자열 리터럴로 묶거나 주석 구문 또는 기타 유사한 트릭을 사용하여 무시할 수있는 방식으로 구성됩니다.
각 언어의 출력이 해당 출력을 생성하는 폴리 글롯의 코드 인 폴리 글롯을 작성하는 것이 목표입니다. 특히, 출력은 삭제만으로 폴리 글롯 코드로 구성되어야하며 주어진 언어에서 퀴네 여야합니다.
규칙
- 만 적절한 quines가 허용되지 않습니다 (어떤 소스 코드를 읽고, STDOUT가 옵션이 아닌 경우에는 복용 입력, 출력은 STDOUT 또는 가장 가까운 대안 일 수 없습니다해야하며, 프로그램은 암시 적으로 인쇄 단지 리터럴보다 더 많은 구성되어야합니다).
- 언어마다 다른 인코딩을 사용할 수 있으므로 원시 바이트가 중요합니다. 예를 들어, 언어 A가 UTF-8을 사용하고 언어 B가 CP437을 사용하는 경우 (16 진) 코드
C3 88 46 47
는ÈFG
언어 A 및├êFG
언어 B에 대한 코드 입니다 . - 모든 출력은 고유 바이트 여야합니다 (다시 원시 바이트 비교). 이렇게하면 부 언어 버전을 제한하려고 할 때의 복잡성을 피할 수 있습니다. 두 언어가 코드의 동일한 부분을 사용하여 동일한 작업을 수행하는 경우 두 언어를 모두 주장 할 수 없습니다.
- A와 B의 두 언어
XY
가 모두 유효한 출력이지만YZ
B에서도 유효한XY
경우 A에YZ
대한 출력과 B에 대한 출력으로 선택할 수 있으므로 점수에서 두 언어를 모두 청구 할 수 있습니다 ( 그러나XY
위의 규칙으로 인해 두 언어를 모두 주장 할 수는 없습니다 .)
- A와 B의 두 언어
- 모든 출력은 가능한 짧아야합니다. 예를 들어, 코드가
print('foo')#something
Python 3 인 경우 (출력이 정확하지 않다는 사실을 무시하고) 출력해야하는 코드는print('foo')
이고print('foo')#
허용되지 않습니다. 올바른 출력을 생성하는 동일한 (최소) 길이의 여러 문자열이있는 경우 그 중 하나를 선택할 수 있습니다. - 제출물은 2 개 이상의 언어로 된 폴리 글 로트 여야합니다.
- 에 의해 점수가 제공됩니다
(number of programming languages with distinct outputs)**3/(total byte size of polyglot)
. 가장 높은 점수가 이깁니다. 두 제출물이 동일한 점수를 얻은 경우 해당 점수에 도달 한 제출물이 먼저 이깁니다.