Zazwyczaj poligloty są skonstruowane w taki sposób, że każdy język może zignorować części kodu obecne w innych językach, zawijając je w literały łańcuchowe, używając składni komentarza lub innych podobnych sztuczek.
Twoim celem jest napisanie poliglota, w którym wyjściem dla każdego języka jest kod z poliglota, który generuje ten wynik. W szczególności dane wyjściowe muszą być skonstruowane z kodu poliglota z tylko usunięciami i musi to być quine w danym języku.
Zasady
- Dozwolone są tylko odpowiednie quiny (bez odczytu kodu źródłowego, bez pobierania danych wejściowych, wyjście musi być do STDOUT lub najbliższej alternatywy, jeśli STDOUT nie jest opcją, a programy muszą składać się z więcej niż tylko literałów, które są domyślnie drukowane).
- Ponieważ różne języki mogą używać różnych kodowań, ważne są tutaj nieprzetworzone bajty. Na przykład, jeśli język A używa UTF-8, a język B używa CP437, kod (szesnastkowy)
C3 88 46 47
byłbyÈFG
dla języka A i├êFG
dla języka B. - Wszystkie dane wyjściowe muszą być odrębne (ponownie, porównanie surowych bajtów). Pozwala to uniknąć komplikacji przy próbie ograniczenia mniejszych wersji językowych - jeśli dwa języki używają tej samej części kodu do wykonania tej samej czynności, nie można uzyskać do nich obu.
- Jeśli masz dwa języki A i B, które
XY
są poprawnymi danymi wyjściowymi w obu, aleYZ
są również poprawne w B, możesz wybraćXY
jako wynik dla A iYZ
jako wynik dla B, więc możesz ubiegać się o oba z nich w swoim wyniku ( ale nie możesz ubiegać sięXY
o oba języki z powodu powyższej reguły).
- Jeśli masz dwa języki A i B, które
- Wszystkie wyjścia muszą być jak najkrótsze. Na przykład, jeśli twój kod był
print('foo')#something
dla Pythona 3 (ignorując fakt, że dane wyjściowe są niepoprawne), kod, który musiałbyś wygenerować, byłbyprint('foo')
iprint('foo')#
nie byłby dozwolony. Jeśli istnieje wiele ciągów o tej samej (minimalnej) długości, które dają prawidłowe wyniki, możesz wybrać jeden z nich. - Zgłoszenia muszą być poliglotami w co najmniej 2 językach.
- Twój wynik zostanie przyznany przez
(number of programming languages with distinct outputs)**3/(total byte size of polyglot)
. Najwyższy wynik wygrywa. W przypadku, gdy dwa zgłoszenia osiągną ten sam wynik, zgłoszenie, które osiągnęło ten wynik jako pierwszy, wygrywa.