Desafio:
Escreva um código que, quando executado, produza o código fonte de um segundo programa que possa ser executado em outro idioma. O segundo programa deve gerar o código fonte de um terceiro programa que pode ser executado em um terceiro idioma e assim por diante. O último programa deve sair PPCG
com uma nova linha opcional à direita.
O vencedor será a inscrição com mais idiomas. O comprimento do código do primeiro programa será o desempatador.
Regras importantes:
- Nenhum programa pode ser idêntico
- Cada idioma deve funcionar apenas em um dos códigos-fonte. Deveria ser impossível usar o mesmo idioma em dois lugares da cadeia sem quebrá-lo (veja exemplos) .
- Uma corrente encurtada não é uma corrente quebrada. Se você pode usar um idioma em um local diferente do pretendido e o resultado final ainda for PPCG, é inválido.
- Todas as versões de um idioma contam como idiomas únicos (mas lembre-se da regra número 2)
Exemplos:
Um envio inválido:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
impressõesprint'disp("PPCG")'
- Python 2:
print'disp("PPCG")'
impressõesdisp("PPCG")
- Oitava:
disp("PPCG")
impressõesPPCG
Isso funciona corretamente, mas: você pode executar o primeiro e o segundo código no Python 2 sem quebrar a cadeia, portanto isso viola a regra número 2.
Um envio válido com a pontuação 3:
print("""print'disp("PPCG")'""")
- Python 3:
print("""print'disp("PPCG")'""")
impressõesprint'disp("PPCG")'
- Perl:
print'disp("PPCG")'
impressõesdisp("PPCG")
- Oitava:
disp("PPCG")
impressõesPPCG
Este é exatamente o mesmo código que o exemplo inválido. A diferença é que escolhemos idiomas que aderem à regra número 2: você não pode executar o primeiro código no Perl / Octave, o segundo código no Python 3 / Octave nem o último código no Python 3 / Perl. Isso é válido mesmo que o Python 2 possa executar os dois primeiros programas, porque não usamos o Python 2 como uma das linguagens.