Zur Erinnerung: Bei
Golf Putting Green
sollen die folgenden 6 Brettchen zu einem 3x3-Stapel der Höhe 2 gestapelt
werden.
Dabei müssen Kugeln immer auf Löcher treffen, oben und unten dürfen einige
Kugeln herausschauen, diese werden von zusätzlichen Grund- und Bodenplatten
aufgenommen.
Ober- und Unterseite eines Brettchens sind nicht unabhängig voneinander:
Gegenüber einer Kugel ist das Brettchen stets flach und umgekehrt. Und ist
oben ein Loch, dann natürlich auch unten, d.h. Löcher sind durchgehend.
Wie viele verschiedene Brettchen dieser Art gibt es? Es sind genau 10 Stück.
Jedes Brettchen hat drei Positionen, die jeweils eine Ober- und eine
Unterseite haben. 1 bezeichnet eine Kugel, 0 ein flaches Stück und -1 ein
Loch. Diese 10 möglichen Master-Brettchen sind
Master-Brettchen 00: [(-1, -1), (-1, -1), (-1, -1)]
Master-Brettchen 01: [(-1, -1), (-1, -1), (0, 1)]
Master-Brettchen 02: [(-1, -1), (0, 1), (-1, -1)]
Master-Brettchen 03: [(-1, -1), (0, 1), (0, 1)]
Master-Brettchen 04: [(-1, -1), (0, 1), (1, 0)]
Master-Brettchen 05: [(0, 1), (-1, -1), (0, 1)]
Master-Brettchen 06: [(0, 1), (-1, -1), (1, 0)]
Master-Brettchen 07: [(0, 1), (0, 1), (0, 1)]
Master-Brettchen 08: [(0, 1), (0, 1), (1, 0)]
Master-Brettchen 09: [(0, 1), (1, 0), (0, 1)]
Oben im Bild finden wir in dieser Reihenfolge die Brettchen mit den
Nummern 1, 4, 4, 6, 8 und 9.
Golf Putting Green automatisch lösen mit Python und Z3
Das folgende Python-Programm benutzt den SMT-Solver Z3 und wurde mit Hilfe
von Gemini geschrieben. Das Programm findet insgesamt zwei verschiedene
Lösungen, also eine mehr als vermutet.
Falls Sie die sechs Brettchen für das Geduldspiel anders auswählen wollen,
können Sie die tun und Ihre Auswahl im Quellcode des Solvers eintragen.
Die Ausgabe einer Lösung sieht (leicht vereinfacht) folgendermaßen aus:
==================== LÖSUNG 2 ====================
--- SCHICHT 1 (Unterste Schicht / Waagerecht) ---
Zeile 1: Master #09 -> [(0, 1), (1, 0), (0, 1)]
Zeile 2: Master #06 -> [(0, 1), (-1, -1), (1, 0)]
Zeile 3: Master #04 -> [(-1, -1), (0, 1), (1, 0)]
--- SCHICHT 2 (Oberste Schicht / Senkrecht) ---
Spalte 1: Master #08 -> [(1, 0), (1, 0), (0, 1)]
Spalte 2: Master #04 -> [(-1, -1), (0, 1), (1, 0)]
Spalte 3: Master #01 -> [(1, 0), (-1, -1), (-1, -1)]
Vollständige Analyse von Golf Putting Green mit 8 verschiedenen Brettchen
Falls wir uns daran stören, dass beim Original von Golf Putting Green das
Master-Brettchen 2 doppelt verwendet wurde, so können wir Varianten mit 6
verschiedenen Brettchen untersuchen. Wir müssen also 6 aus 10 Brettchen
auswählen, dafür gibt es 210 Möglichkeiten. Diese 210 Varianten werden
nacheinander mit dem Solver von oben gelöst, und die Ergebnisse werden
zusammengetragen.
Am Ende der Ausgabe des Programms finden Sie die folgenden Statistik der
Lösungsanzahlen.
=======================================================
ZUSAMMENFASSUNG: STATISTIK DER LÖSUNGSANZAHLEN
=======================================================
Lösungsanzahl | Anzahl Spiele mit dieser Anzahl
-------------------------------------------------------
0 | 2
1 | 4
2 |
13
3 |
24
4 |
29
5 |
45
6 |
92
7 | 1
=======================================================