Quanto tempo dura a sua cobra (idioma)?

14

Após o desafio quine de terceira ordem , sua tarefa é escrever um programa Ouroboros que use o maior número possível de idiomas.

Ou seja, na linguagem A, escreva um programa pA que emita o programa pB na linguagem B. O programa pB deve emitir o programa pC na linguagem C, e assim por diante até que, eventualmente, um programa produz o programa original pA na linguagem A.

Não há dois idiomas no seu loop que possam ser iguais ou subconjuntos ou superconjuntos. Nenhum dos programas no loop pode ser idêntico.

A maior cadeia de idiomas vence. O comprimento do código fonte será o desempatador.

Aqui está um exemplo de solução de comprimento 3 fornecido por Ventero.

s='print q<puts %%q{s=%r;print s%%s}>';print s%s

com Python gera esse snippet Perl

print q<puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}>

que gera o seguinte código Ruby

puts %q{s='print q<puts %%q{s=%r;print s%%s}>';print s%s}

que imprime o snippet original do Python:

s='print q<puts %%q{s=%r;print s%%s}>';print s%s
Comunidade
fonte
10
Relevante: um "Ouroboros" de 50 idiomas .
algorithmshark
Muito parecido (fechado): crie uma cadeia de programas em diferentes idiomas
Ypnypn 5/14
@Ypnypn Não é uma duplicata disso, é? Quero dizer que isso é fazer o loop o máximo possível com um desempatador do comprimento do código-fonte. Ninguém nunca teve a chance de postar um comprimento de 4 Ouroborous antes :) Também um loop é diferente de uma cadeia.
Na verdade, é muito parecido com este , mas isso não exigia que a sequência circulasse, então não havia componente quine.
Martin Ender
4
O monstro de 50 idiomas parece ser um vencedor antes mesmo de começarmos.

Respostas:

8

Aqui está um loop de 4 idiomas:

C -> Bash -> Lote -> Python -> C

C

main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}

Bater

echo "echo print 'main(){char *c=\"echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c\";printf(c,34,39,92,34,c,92,34,39,34);}'"

Lote

echo print 'main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}'

Pitão

print 'main(){char *c="echo %cecho print %cmain(){char *c=%c%c%s%c%c;printf(c,34,39,92,34,c,92,34,39,34);}%c%c";printf(c,34,39,92,34,c,92,34,39,34);}'
Josh
fonte
Muito impressionante!