¿Cuánto dura tu serpiente (idioma)?


14

Después del desafío de quine de tercer orden , su tarea es escribir un programa Ouroboros que use tantos idiomas como sea posible.

Es decir, en el lenguaje A, escriba un programa pA que genere el programa pB en el lenguaje B. El programa pB debería emitir el programa pC en el lenguaje C, y así sucesivamente hasta que finalmente un programa emita el programa original pA en el lenguaje A.

No hay dos idiomas en su ciclo que puedan ser iguales o subconjuntos o superconjuntos. Ninguno de los programas en el bucle puede ser idéntico.

La cadena de idiomas más larga gana. La longitud del código fuente será el desempate.

Aquí hay una solución de ejemplo de longitud 3 dada por Ventero.

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

con Python genera este fragmento de Perl

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

que genera el siguiente código Ruby

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

que luego imprime el fragmento original de Python:

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



@Ypnypn No es un duplicado de eso, ¿verdad? Quiero decir que esto es para hacer el bucle el mayor tiempo posible con un desempate de la longitud del código fuente. Nadie ha tenido la oportunidad de publicar una longitud 4 Ouroborous antes :) También un bucle es diferente de una cadena.

En realidad, es muy similar a este , pero eso no requiere que la secuencia se repita, por lo que no hubo un componente quine.
Martin Ender

44
La bestia de los 50 idiomas parece ser un ganador incluso antes de comenzar.

Respuestas:


8

Aquí hay un bucle 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);}

Golpetazo

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ón

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);}'

¡Muy impresionante!
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.