2010-12-16 11 views
14

Estoy viendo http://home.hccnet.nl/h.g.muller/umax4_8.c, un archivo de origen en C. En lo principal, que tiene esta:¿Qué está haciendo?

N=-1;W(++N<121) 
    printf("%c",N&8&&(N+=7)?10:".?+nkbrq?*?NKBRQ"[b[N]&15]); 

no entiendo lo que el printf() está haciendo, pero de alguna manera da salida a un tablero de ajedrez con el terminal.

¿Alguna idea?

+6

este es un buen código ofuscado, lol. –

+8

Te estás perdiendo un poco aquí. W, por ejemplo, se ha definido como 'while'. Es posible que desee incluir todo el código pertinente. – EboMike

+1

"... aunque podría describirlo como un código C ofuscado, debido a su pequeño tamaño podría ser más fácil de entender que los motores más grandes y mejor diseñados". H.G. Muller –

Respuesta

28

Básicamente esto:

for (n = 0; n < 121; ++n) { 
    if (n & 8) { 
     n += 7; 
     putchar('\n'); 
    } else { 
     putchar(".?+nkbrq?*?NKBRQ"[b[n] & 15]); 
    } 
} 

Lo que hace es, después de cada 8 artículos de mesa, imprimir una nueva línea; de lo contrario, imprima el ítem indicado por b[n].

+1

+1 trabajo increíble – SmallChess

+1

H.G. Muller es el otro nombre de C J-Y;) – William

+2

@William: Gracioso. :-) En realidad, he realizado ingeniería inversa durante muchos años; esto es más o menos como RE, solo que es más fácil porque no estoy tratando directamente con el código objeto. :-P –

Cuestiones relacionadas