2010-12-21 16 views
5

Another SO question menciona una quine fantástica de Yusuke Endoh. Un quine es un programa de computadora que produce una copia de su propio código fuente como su único resultado; este lo hace con un giro. A must-see.¿Cómo funciona esta excelente quine?

Pero no puedo entender cómo funciona. ¿Alguna sugerencia?

+0

Los comentarios en esa publicación son un comienzo decente. –

+1

+1 para el juego de palabras con "giro". Hay un YouTube que muestra que avanza un grado a través de la rotación completa de 360 ​​grados [aquí] (http://www.youtube.com/watch?v=ktq-22iq-Po) que es divertido de ver. Tenga en cuenta que el único otro texto parpadeante se encuentra en la esquina superior izquierda donde se define 'v'. – RBerteig

Respuesta

6

En primer lugar, tenga en cuenta que la línea v= y el globo ASCII son los únicos bits del código que cambian en cada generación. Esto nos da un indicio de lo que está sucediendo aquí.

El principio básico es que el modelo de globo se codifica con Zlib::Deflate en la primera mitad del código, y el segundo medio se expande con Zlib::Inflate, lo lee, y dibuja el mundo ASCII dentro del nuevo código, con el nuevo v valor. No hay nada particularmente especial sobre los cambios de 45 °; el código dibujará el globo terráqueo a la rotación que quieras. (De hecho, toma un argumento de línea de comando que especifica el número de grados, si lo desea).

Para obtener más detalles sobre la implementación, le recomiendo ampliar el código fuente y rastrearlo, con esa comprensión básica de cómo quine está diseñado :)