En règle générale, les polyglottes sont construites de telle manière que chaque langue peut ignorer des parties du code présentes dans d'autres langues, en les enveloppant dans des chaînes de caractères, en utilisant la syntaxe des commentaires ou d'autres astuces similaires.
Votre objectif est d'écrire un polyglotte où la sortie pour chaque langue est le code du polyglotte qui produit cette sortie. Plus précisément, la sortie doit être construite à partir du code polyglotte avec seulement des suppressions, et elle doit être une quine dans le langage donné.
Règles
- Seules les quines appropriées sont autorisées (pas de lecture du code source, pas de prise d'entrée, la sortie doit être vers STDOUT ou l'alternative la plus proche si STDOUT n'est pas une option, et les programmes doivent être constitués de plus que des littéraux qui sont implicitement imprimés).
- Étant donné que différents langages peuvent utiliser différents codages, les octets bruts sont ce qui importe ici. Par exemple, si la langue A utilise UTF-8 et la langue B utilise CP437, le code (hex)
C3 88 46 47
seraitÈFG
pour la langue A etÈFG
pour la langue B. - Toutes les sorties doivent être distinctes (encore une fois, en comparant les octets bruts). Cela évite les complications liées à la limitation des versions linguistiques mineures - si deux langues utilisent la même partie du code pour faire la même chose, vous ne pouvez pas les revendiquer toutes les deux.
- Si vous avez deux langues A et B telles qu'une
XY
sortie valide dans les deux, maisYZ
également dans B, vous pouvez choisirXY
comme sortie pour A etYZ
comme sortie pour B, afin que vous puissiez les revendiquer toutes les deux dans votre score ( mais vous ne pouvez pas réclamerXY
pour les deux langues en raison de la règle ci-dessus).
- Si vous avez deux langues A et B telles qu'une
- Toutes les sorties doivent être aussi courtes que possible. Par exemple, si votre code l'était
print('foo')#something
, pour Python 3 (en ignorant le fait que la sortie n'est pas correcte), le code que vous auriez besoin de produire seraitprint('foo')
etprint('foo')#
ne serait pas autorisé. S'il existe plusieurs chaînes de longueur égale (minimale) qui produisent une sortie correcte, vous pouvez choisir l'une d'entre elles. - Les soumissions doivent être polyglottes dans au moins 2 langues.
- Votre score sera donné par
(number of programming languages with distinct outputs)**3/(total byte size of polyglot)
. Le score le plus élevé l'emporte. Dans le cas où deux soumissions obtiennent le même score, la soumission ayant atteint ce score en premier gagnera.