Tipicamente, i poliglotti sono costruiti in modo tale che ogni lingua possa ignorare parti del codice presenti per altre lingue, avvolgendole in stringhe letterali, usando la sintassi dei commenti o altri trucchi simili.
Il tuo obiettivo è scrivere un poliglotta in cui l'output per ogni lingua è il codice del poliglotta che produce quell'output. In particolare, l'output deve essere costruito dal codice poliglotta con solo eliminazioni e deve essere un quine nella lingua data.
Regole
- Sono consentiti solo i quines appropriati (nessuna lettura del codice sorgente, nessun input di input, output deve essere su STDOUT o alternativa più vicina se STDOUT non è un'opzione e i programmi devono consistere in più di semplici letterali che sono stampati in modo implicito).
- Poiché lingue diverse possono utilizzare codifiche diverse, i byte grezzi sono ciò che conta qui. Ad esempio, se la lingua A utilizza UTF-8 e la lingua B utilizza CP437, il codice (esadecimale)
C3 88 46 47
sarebbeÈFG
per la lingua A eÈFG
per la lingua B. - Tutti gli output devono essere distinti (di nuovo, confrontando i byte grezzi). Questo evita complicazioni nel tentativo di limitare le versioni in lingue minori: se due lingue usano la stessa parte del codice per fare la stessa cosa, non puoi rivendicarle entrambe.
- Se hai due lingue A e B in modo tale che
XY
sia un risultato valido in entrambi, maYZ
anche valido in B, puoi scegliereXY
come output per A eYZ
come output per B, quindi puoi rivendicare entrambi nel tuo punteggio ( ma non puoi richiedereXY
entrambe le lingue a causa della regola sopra).
- Se hai due lingue A e B in modo tale che
- Tutte le uscite devono essere il più corte possibile. Ad esempio, se il tuo codice fosse
print('foo')#something
, per Python 3 (ignorando il fatto che l'output non è corretto), il codice che avresti bisogno di produrre sarebbeprint('foo')
, eprint('foo')#
non sarebbe permesso. Se ci sono più stringhe di uguale (minima) lunghezza che producono un output corretto, puoi sceglierne una qualsiasi. - I contributi devono essere poliglotti in almeno 2 lingue.
- Il tuo punteggio sarà dato da
(number of programming languages with distinct outputs)**3/(total byte size of polyglot)
. Vince il punteggio più alto. Nel caso in cui due invii raggiungano lo stesso punteggio, vincerà quello che ha raggiunto per primo quel punteggio.