Gran programa
Publicado por blaxter - 05 Feb 2006 a las 10:31Esto que navegando me encuentro con este gran código, con tatuaje de un tio incluido
int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\
o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}

Claramente me ha picado la curiosidad, si hacemos un copy paste, compilamos y ejecutamos, veremos que sale "hello word!". Vayamos por partes y pongamos el código más legible:
int i;
main(){
for( ;i["]<i;++i){--i;}"]; read('-'-'-',i+++"hello, world!\n",'/'/'/'));
}
read(j,i,p){
write(j/p+p,i---j,i/i);
}
Esta claro, tenemos un bucle for que llama en cada iteracion a la función read, la cual está definida posteriormente como un write. En la invocacion del read, el primer parametro será siempre 0, y el tercero es siempre 1 y el segundo parametro vemos que es un incremento de i (i++) mas una cadena (una cadena es un puntero), es decir le estamos pasando el caracter i-esimo de esa cadena a la función read.
Veamos ahora esa función read, como j es 0 y p es 1, el write queda así:
write(1, i--, 1);
. Es decir estamos escribiendo el caracter anterior al puntero dado por el stream 1 (stdout).
Esto empieza a tener ya sentido, no?. Ahora veamos la guarda del bucle for, del main():
for(;i["]<i;++i){--i;}"]; ......
No tiene inicialización, y como guarda vemos algo que se podría expresar mas claramente como *(i+ "]<i;++i){--i;}" ), y vemos que esa cadena tiene una longitud igual a la frase "hello world!", asi que se ejecutará tantas veces como longitud de la frase.
Por lo tanto ya tenemos todo, tenemos un bucle que se ejecuta tantas veces como la frase que queremos escribir y en cada iteración pasamos un puntero al caracter (i+1)-esimo el cual será decrementado e imprimido, asi hasta que terminemos de saludar al mundo ;).
So easy, isn't it?.
3 Comentarios »
RSS feed para los comentarios de esta entrada.
Dejar un comentario
Esta obra está bajo una
licencia de Creative Commons.
Este blog funciona gracias a WordPress
con el theme GimpStyle
diseñado por Horacio Bella y adaptado por un servidor.
Feed entradas
Está claro
Comentario por Maldito_duende — 6 Febrero, 2006 @ 12:48 #
En vez de perder el tiempo en comentar esto, dedícate a entrenar al pes5 xDD
Comentario por Josepul — 6 Febrero, 2006 @ 13:33 #
josepul deberia practicar al mario kart :O.
pakete maximus
Comentario por blax — 6 Febrero, 2006 @ 14:04 #