2048 tuple-2048
Code-Rundgang

Das Programm, Zeile für Zeile

Rund 2000 Zeilen C, keine einzige externe Bibliothek. Links steht jeweils die Erklärung, rechts der Code. Zeilen mit blauer Nummer haben eine eigene Anmerkung – einfach anklicken. Die Erklärungen stehen als Kommentare direkt im Quelltext (/*@ … */ und //@) und werden daraus automatisch erzeugt; sie können also nicht veralten.

Die Architektur auf einen Blick

main.cKommandozeile train.cThreads, Meilensteine search.cExpectimax (nur Spielen) td.cZug wählen + TD-Lernen ntuple.cV(s) = Σ Gewichte board.c64-Bit-Spielfeld, Tabellen io.cCSV · JSON · JSONL runs/… → tools/bundle.py → web/data/runs.js → diese Webseite

Von unten nach oben gelesen

  • board – das Spiel selbst. Ein Feld ist eine 64-Bit-Zahl, ein Zug sind vier Tabellen-Nachschläge.
  • ntuple – die Bewertung. Tupel lesen Zellen ab, schlagen Gewichte nach und summieren.
  • td – Entscheiden und Lernen. Bester Zug = höchstes Punkte + Wert; nach der Partie rückwärts korrigieren.
  • search – optionale Vorausschau für Vorführungen.
  • train – organisiert Tausende Partien auf mehreren Threads und hält an Meilensteinen an.
  • io – schreibt, was die Webseite anzeigt.
  • main – macht aus all dem ein Kommandozeilen-Programm.

Die blau umrandeten Module sind der „heiße Pfad“: Hier verbringt das Training 99 % seiner Zeit.