Was macht dieses kryptische C-Code-Snippet?

Lesezeit: 1 Minute

Benutzer-Avatar
Kleines Schach

Ich lese etwas C-Code, der unter gefunden werden kann https://home.hccnet.nl/hgmuller/umax4_8.c. Da, rein main()es hat folgendes:

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

Ich verstehe nicht, was das ist printf() Anruf tut, aber irgendwie gibt es ein Schachbrett an das Terminal aus.

Irgendeine Idee?

  • Das ist netter verschleierter Code, lol.

    – DER DOKTOR

    16. Dezember 2010 um 4:57 Uhr

  • Hier fehlt dir einiges. W zum Beispiel wurde definiert als while. Möglicherweise möchten Sie den gesamten relevanten Code einschließen.

    – EboMike

    16. Dezember 2010 um 4:58 Uhr

  • “…obwohl man es als verschleierten C-Code beschreiben könnte, ist es aufgrund seiner geringen Größe möglicherweise leichter zu verstehen als größere, besser gestaltete Engines.” HG Müller

    – Eric Fortis

    16. Dezember 2010 um 5:14 Uhr

Benutzer-Avatar
CK Jung

Grundsätzlich gilt:

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

Was das tut, ist, nach jeweils 8 Board-Elementen einen Zeilenumbruch zu drucken; andernfalls drucken Sie das mit gekennzeichnete Board-Item aus b[n].

  • HG Muller ist der andere Name von C JY 😉

    – Wilhelm

    16. Dezember 2010 um 5:12 Uhr

  • @William: Lustig. 🙂 Eigentlich habe ich viele Jahre Reverse Engineering betrieben; das ist so ziemlich wie RE, nur einfacher, weil ich mich nicht direkt mit Objektcode befasse. 😛

    – C. K. Young

    16. Dezember 2010 um 5:16 Uhr

  • Sollte nicht n += 7 Teil sein if Bedingung?

    – codaddict

    16. Dezember 2010 um 6:25 Uhr

  • @codaddict: Semantisch ist es nicht anders: n steigt monoton an und stoppt nach 120, wird also nie wieder auf 0 überlaufen. n += 7 wird für die Zwecke dieses Codes niemals falsch sein.

    – C. K. Young

    16. Dezember 2010 um 6:32 Uhr

1071170cookie-checkWas macht dieses kryptische C-Code-Snippet?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy