Dieses Dokument sichert den Ausgangspunkt der Vibe-Coding-Serie aus
Generierte Wirtschaftssimulation … Tic Tac Toe.
Grund: Freigabe-Links auf Chat-Verläufe sind flüchtig. Der Link
https://
Der Ausgangs-Prompt (wörtlich)¶
Ich möchte ein Tic-Tac-Toe-Spiel im Browser spielen, bei dem der aktuelle Spielstand immer in eine Normalform transformiert und dargestellt wird. Dabei soll die Normalform die Eigenschaft haben, dass ich damit bis auf Symmetrie leicht alle möglichen Spielstände, insb. aber alle möglichen gewinnenden Spielverläufe aufzählen kann. So soll z.B. eine Eckenplatzierung am Anfang normalisiert werden auf eine Eckenplatzierung links oben usw. Es soll einen Computergegner geben, der perfekt spielt. Bitte generiere ein ultraknappes Python-Skript, welches mit ASCII-Art arbeitet.
Modell: Gemini (Stand des Verlaufs 2025). Erzeugt wurde daraus zuerst
generated-0.py.
Was daran bemerkenswert ist¶
Der Prompt enthält vier Anforderungen, die sich teilweise widersprechen, und genau daraus erklärt sich der Verlauf der sieben Iterationen:
“im Browser spielen” — wurde vom Modell stillschweigend fallen gelassen; alle Fassungen sind Terminal-Programme. Eine nicht erfüllte Anforderung, die niemandem auffiel, weil das Ergebnis lief.
“Normalform bis auf Symmetrie” — die inhaltlich schwierigste Forderung (die Symmetriegruppe des Bretts hat acht Elemente) und die, an der die späteren Iterationen hängen.
“Computergegner, der perfekt spielt” — verlangt Minimax; das ist die Funktion
mmingen7engine.py.“ultraknapp” — die Anforderung, die den Codestil des ganzen Kapitels erklärt. Sie steht in direktem Konflikt zu 2 und 3 und gewinnt, weil sie am leichtesten zu erfüllen ist.
Zusammen sind das vier Entscheidungen, die das Modell getroffen hat, ohne zu fragen — das Phänomen, das in der Anleitung zum Vibe Coding als “alle Entscheidungen, die man einem LLM überlässt, werden willkürlich getroffen” beschrieben ist.
Die weiteren Iterationen¶
Die Prompts von Fassung zu Fassung stehen im verlinkten Verlauf. Ihr Ergebnis
liegt vollständig im Repository: generated-0.py bis generated-6.py und die
aufgeteilte siebte Fassung (gen7engine.py, gen7ui.py, gen7tests.py). Der Vergleich
zweier aufeinanderfolgender Dateien zeigt jeweils, was ein oder zwei Prompts bewirkt
haben:
diff -u generated-3.py generated-4.py