Falls wir unsere Happy Cubes automatisch vom Computer lösen lassen wollen,
dann hilft der folgende Happy Cube Solver. Er wurde mit Hilfe von Gemini
erstellt und liefert neben den Lösungen zu einem Happy Cube einige zusätzliche
Einsichten. Aber der Reihen nach:
Der Python-Quellcode enthält am Ende die Daten für mehrere verschiedene Happy
Cubes. Diese Liste wird bei Bedarf ständig erweitert, und Sie können hier auch
eigene Happy Cubes eintragen. Da die Lösung eines einzelnen Happy Cubes
relativ schnell geht, werden alle Happy Cubes aus der Liste nacheinander
abgearbeitet. Zu jedem Happy Cube werden mehrere Bilder erstellt und
abgespeichert:
-
Für jede Lösung wird ein Würfelnetz des gelösten Würfels erzeugt. Solch
ein zweidimensionales Würfelnetz zeigt alle Seiten des Würfels, bei einem
Bild des zusammengebauten, dreidimensionalen Würfels wäre die Struktur der
unsichtbaren Seiten immer unklar.
-
Zusätzlich wird noch eine Möglichkeit erzeugt, wie die sechs Steine in
einem 2x3-Rahmen liegen könnten. Die muss nicht die Anordnung wie in der
Originalverpackung sein, da wir den Rahmen aus der Originalverpackung
nicht mit vorgeben.
Für den Happy Cube Orange (Amsterdam) aus der Happy-Serie sehen diese
Abbildungen folgendermaßen aus:
Die Ausgabe auf der Kommandozeile enthält einige weitere Informationen, hier
als Beispiel für den Happy Cube Amsterdam:
============================================================
HAPPY CUBE: HAPPYCUBE ORANGE (AMSTERDAM)
------------------------------------------------------------
Fingerprint (Zähne): [5, 6, 8, 8, 8, 9]
Fingerprint (Hex) : 1522-1AD5-2326-25AD-2D56-4DAD
------------------------------------------------------------
=== RAHMEN === -> Bild gespeichert als:
Bilder\HappyCube_Orange_(Amsterdam)_2x3.png
Lösung als Würfel... SUCHE ABGESCHLOSSEN!
-> Gefundene eindeutige Lösungen: 1
-> Geschätzte Schwierigkeit pro Lösung: 154 Sackgassen, 287
Entscheidungen
=== LÖSUNG 1 === -> Bild gespeichert als:
Bilder\HappyCube_Orange_(Amsterdam)_Lösung_1.png
============================================================
Die Fingerprint-Informationen dienen dazu, für einen vorliegenden Happy Cube
zu entscheiden, ob er mit einem anderen, bereits bekannten Cube übereinstimmt.
Es gibt einen schnellen Vorab-Check, und einen eindeutigen Hex-Fingerprint.
1. Die Human-Checksum (Für den schnellen Vorab-Check): Jedes 5x5-Teil hat
genau 16 Randfelder (der innere 3x3-Kern ist ja immer massiv). Wenn man
einfach alle Zähne (also die vorstehenden Moosgummi-Blöcke) auf diesem Rand
zählt, bekommt man pro Teil eine Zahl zwischen 0 und 16. Jetzt werden
die Zähne der 6 Steine gezählt und aufsteigend sortiert.
Vorteil: Diesen "Mini-Fingerprint" kann ein Mensch in 30 Sekunden per Hand
ermitteln, um zu prüfen, ob zwei Würfel offensichtlich unterschiedlich sind.
Zwei gleiche Mini-Fingerprints lassen allerdings nicht den Schluss zu, dass
es sich um identische Spiele handelt.
2. Der 16-Bit Hex-Fingerprint (Als eindeutige ID)
Um Puzzles zu 100 % eindeutig zu unterscheiden, wandeln wir den Rand jedes
Teils in eine 16-stellige Binärzahl um, welche unabhängig von der
Reihenfolge und Orientierung der Steine ist.
So wird der Code gebildet:
Schritt 1:Rand auslesen: Man liest die 16 Randfelder im Uhrzeigersinn ab,
beginnend oben links. 1 steht für Zahn, 0 für Lücke. Das ergibt eine
16-Bit-Binärzahl (z. B. 01010111...).
Schritt 2: Invarianz herstellen: Da das Teil auf 8 Arten liegen kann (4x
gedreht, 2x gewendet), gibt es für dieses Teil 8 mögliche Binärzahlen. Der
Algorithmus wählt einfach immer die kleinste dieser 8 Zahlen als den
offiziellen Code für dieses Teil. Diese 16-Bit-Zahl wird in einen kurzen,
4-stelligen Hexadezimal-Code umgewandelt (z. B. 2F4A).
Schritt3: Sortieren & Zusammenfügen: Die 6 Hex-Codes der Steine werden
aufsteigend sortiert und mit Bindestrichen verbunden.
Das Ergebnis ist
eine absolut eindeutige ID-Zeichenkette, die im obigen Beispiel so
aussieht:
1522-1AD5-2326-25AD-2D56-4DAD
Als Nebeneffekt erkennt man doppelte Steine schnell, da sie derselbe
Hex-Code doppelt im Fingerprint auftaucht.
Zusätzlich gibt es Informationen, wie schwierig die Aufgabe für den Solver
war, die kann auch als geschätzte Schwierigkeit für den Menschen betrachtet
werden: Gemessen wird die Anzahl der Entscheidungen, die tu treffen waren
sowie die Anzahl der Sackgassen, in welche der Solver durchschnittlich pro
Lösung gelaufen ist. Bei beiden Werten sprechen kleinere Werte für einfachere
Happy Cubes.
Zum Abschluss noch eine Bemerkung, wie der Happy Cube Solver weitere Lösungen
vermeidet, die sich von einer vorhandenen Lösung nur durch Drehung oder
Spiegelung unterscheidet: Dafür wird ein Stein gesucht, der nicht symmetrisch
ist. Dieser wird nun in einer festen Orientierung stets als Bodenplatte
benutzt.