Gran programa

Esto 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 Thoughts on “Gran programa

  1. Maldito_duende on 6 February, 2006 at 12:48 said:

    Está claro

  2. En vez de perder el tiempo en comentar esto, dedícate a entrenar al pes5 xDD

  3. josepul deberia practicar al mario kart :O.
    pakete maximus

Post Navigation