27.9.26

Golf Putting Green, mit SMT-Solver gelöst

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                                  
=======================================================


Keine Kommentare:

Kommentar veröffentlichen

Golf Putting Green, mit SMT-Solver gelöst

Zur Erinnerung: Bei Golf Putting Green sollen die folgenden 6 Brettchen zu einem 3x3-Stapel der Höhe 2 gestapelt werden.  Dabei ...