In der Regel werden Polyglots so aufgebaut, dass jede Sprache Teile des Codes, die für andere Sprachen vorhanden sind, ignorieren kann, indem sie in Zeichenfolgenliterale mit Kommentarsyntax oder ähnlichen Tricks eingeschlossen werden.
Ihr Ziel ist es, einen Polyglot zu schreiben, bei dem die Ausgabe für jede Sprache der Code aus dem Polyglot ist, der diese Ausgabe erzeugt. Insbesondere muss die Ausgabe aus dem Polyglot-Code mit nur Löschungen bestehen und in der angegebenen Sprache eine Quine sein.
Regeln
- Es sind nur korrekte Quines zulässig (kein Lesen des Quellcodes, keine Eingabe, Ausgabe muss zu STDOUT oder zur nächstgelegenen Alternative erfolgen, wenn STDOUT keine Option ist, und die Programme müssen aus mehr als nur implizit gedruckten Literalen bestehen).
- Da verschiedene Sprachen unterschiedliche Kodierungen verwenden können, sind hier die Rohbytes von Bedeutung. Wenn beispielsweise die Sprache A verwendet UTF-8 und die Sprache B verwendet CP437, das (hex) Code
C3 88 46 47
wäreÈFG
für Sprache A und├êFG
für die Sprache B. - Alle Ausgaben müssen unterschiedlich sein (auch hier werden die Rohbytes verglichen). Dies vermeidet Komplikationen beim Versuch, kleinere Sprachversionen einzuschränken. Wenn zwei Sprachen denselben Teil des Codes verwenden, um dasselbe zu tun, können Sie nicht beide beanspruchen.
- Wenn Sie zwei Sprachen A und B haben,
XY
die eine gültige Ausgabe in beiden Sprachen , aberYZ
auch in B sind, können SieXY
als Ausgabe für A undYZ
als Ausgabe für B auswählen , sodass Sie beide in Ihrer Partitur beanspruchen können ( Sie können jedochXY
aufgrund der oben genannten Regel keinen Anspruch auf beide Sprachen erheben .
- Wenn Sie zwei Sprachen A und B haben,
- Alle Ausgänge müssen so kurz wie möglich sein. Wenn Ihr Code beispielsweise
print('foo')#something
für Python 3 wäre (ohne die Tatsache zu berücksichtigen, dass die Ausgabe nicht korrekt ist), wäre der Code, den Sie ausgeben müsstenprint('foo')
,print('foo')#
zulässig und nicht zulässig. Wenn es mehrere Zeichenfolgen mit gleicher (minimaler) Länge gibt, die eine korrekte Ausgabe ergeben, können Sie eine beliebige davon auswählen. - Einsendungen müssen mehrsprachig und in mindestens 2 Sprachen sein.
- Ihre Punktzahl wird von gegeben
(number of programming languages with distinct outputs)**3/(total byte size of polyglot)
. Die höchste Punktzahl gewinnt. Falls zwei Einsendungen die gleiche Punktzahl erreichen, gewinnt die Einsendung, die diese Punktzahl zuerst erreicht hat.