Sfida:
Scrivi un codice che, una volta eseguito, genererà il codice sorgente di un secondo programma che può essere eseguito in un'altra lingua. Il secondo programma dovrebbe generare il codice sorgente di un terzo programma che può essere eseguito in una terza lingua e così via. L'ultimo programma dovrebbe essere prodotto PPCG
con una nuova riga finale singola facoltativa.
Il vincitore sarà l'invio con il maggior numero di lingue. La lunghezza del codice del primo programma sarà il tie breaker.
Regole importanti:
- Nessun programma può essere identico
- Ogni lingua deve funzionare solo su uno dei codici sorgente. Dovrebbe essere impossibile usare la stessa lingua due punti della catena senza romperla (vedi esempi) .
- Una catena accorciata non è una catena spezzata. Se puoi usare una lingua in un posto diverso da quello previsto e il risultato finale è ancora PPCG, allora non è valido
- Tutte le versioni di una lingua contano come lingue uniche (ma tieni presente la regola numero 2)
Esempi:
Un invio non valido:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
stampeprint'disp("PPCG")'
- Python 2:
print'disp("PPCG")'
stampedisp("PPCG")
- Octave:
disp("PPCG")
stampePPCG
Funziona correttamente, ma: puoi eseguire sia il primo che il secondo codice in Python 2 senza interrompere la catena, quindi ciò viola la regola numero 2.
Un invio valido con punteggio 3:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
stampeprint'disp("PPCG")'
- Perl:
print'disp("PPCG")'
stampedisp("PPCG")
- Octave:
disp("PPCG")
stampePPCG
Questo è esattamente lo stesso codice dell'esempio non valido. La differenza è che abbiamo scelto le lingue che aderiscono alla regola numero 2: non è possibile eseguire il primo codice in Perl / Octave, il secondo codice in Python 3 / Octave né l'ultimo codice in Python 3 / Perl. Questo è valido anche se Python 2 può eseguire i due primi programmi, perché non abbiamo usato Python 2 come una delle lingue.