2010-12-16 18 views
14

Patrzę na http://home.hccnet.nl/h.g.muller/umax4_8.c, plik źródłowy C. W głównym, ma to:Co to robi?

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

Nie rozumiem co printf() robi, ale jakoś wyjść szachownicy do terminalu.

Każdy pomysł?

+6

to jest ładny, niezrozumiały kod, lol. –

+8

Tęsknisz za dużo tutaj. W na przykład zostało zdefiniowane jako 'while'. Możesz dołączyć cały stosowny kod. – EboMike

+1

"... chociaż możesz opisać to jako zaciemniony kod C, ze względu na jego mały rozmiar może być łatwiejszy do zrozumienia niż większe, lepiej zaprojektowane silniki." H.G. Muller –

Odpowiedz

28

Zasadniczo:

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

Co to robi jest po każdych 8 pozycji zarządu, wydrukować przełamane; w przeciwnym razie wydrukuj element płyty wskazany przez b[n].

+1

+1 niesamowita praca – SmallChess

+1

H.G. Muller to C inne imię J-Y;) – William

+2

@William: Zabawne. :-) Właściwie, przez wiele lat zajmowałem się inżynierią wsteczną; to jest prawie jak RE, tylko łatwiejsze, ponieważ nie mam do czynienia bezpośrednio z kodem obiektowym. :-P –