通常、ポリグロットは、各言語が他の言語に存在するコードの一部を無視できるように、文字列リテラルでラップしたり、コメント構文などのトリックを使用して構築されます。
あなたの目標は、各言語の出力がその出力を生成するポリグロットからのコードであるポリグロットを書くことです。具体的には、出力は削除のみのポリグロットコードから構築する必要があり、指定された言語のクインでなければなりません。
ルール
- 適切なクインだけが許可されます(ソースコードの読み取り、入力の取得、STDOUTへの出力、またはSTDOUTがオプションでない場合は最も近い代替が必要であり、プログラムは暗黙的に印刷されるリテラル以外のもので構成する必要があります)。
- 言語ごとに異なるエンコーディングを使用できるため、ここで重要なのは未加工バイトです。たとえば、言語AがUTF-8を使用し、言語BがCP437を使用する場合、(16進数)コード
C3 88 46 47
はÈFG
言語Aと├êFG
言語Bになります。 - すべての出力は個別でなければなりません(やはり、生のバイトを比較します)。これにより、マイナー言語バージョンを制限しようとする複雑さを回避できます。2つの言語がコードの同じ部分を使用して同じことを行う場合、両方を要求することはできません。
XY
両方で有効な出力でYZ
あるがBでも有効な2つの言語AとB がある場合XY
、AYZ
の出力とBの出力として選択できるため、スコアでそれらの両方を要求できます(XY
上記の規則のため、両方の言語を請求することはできません)。
- すべての出力はできるだけ短くする必要があります。たとえば
print('foo')#something
、Python 3のコードが(出力が正しくないという事実を無視して)の場合、出力する必要があるコードはになりprint('foo')
、print('foo')#
許可されません。正しい出力を生成する長さが等しい(最小の)文字列が複数ある場合は、いずれかを選択できます。 - 提出物は、少なくとも2言語の多言語でなければなりません。
- あなたのスコアはによって与えられ
(number of programming languages with distinct outputs)**3/(total byte size of polyglot)
ます。最高のスコアが勝ちます。2つの提出が同じスコアを達成した場合、最初にそのスコアに達した提出が勝ちます。