| Alle Programme benötigen die Datei "solitair.mov" im selben Verzeichnis, in welcher sie alle gefundenen Lösungswege auflisten. |
| |
| Bei allen Programmen sind die Tasten "i", "s" (Statusinformation) und "q", "e" und "x" (Beenden) Deine Freunde. |
| |
Solitair (SourceCode, Pascal) (12.87 KB) |
| |
| Bei Borland Pascal 7.1 stürzt das dritte Programm immer nach der 8. Bewegung mit einem Stack Error ab. Kompiliert unter FreePascal laufen alle 3 Programme stabil (jedes min. 1500 Stunden). Anbei sind in den jeweiligen Archiven schon bereits die kompilierten Dateien für verschiedene Systeme. |
| |
Solitair (Binaries, Linux) (146.39 KB) |
Solitair (Binaries, DOS/Windows) (203.4 KB) |
| Nachdem es etwas enttäuschend wurde, dass bei einem Brett von 45 Feldern keine Lösung in Sicht war, beschloss ich, das Feld etwas zu verkleinern, was sich später als richtig heraus gestellt hat. Bei einer Solitaire-Variante von 9+4*6=33 Feldern wies mein alter PC bereits die erste Lösung nach 20 Sekunden auf, und aufgrund der Rekursion die nächsten 150 ein paar Sekunden später. Bereits nach 10 Minuten war die Movelist mit 2000 Lösungen gefüllt, nach 30 Minuten mit 4000. Hierbei wird allerdings nicht auf Symmetrie überprüft, welche man später allerdings mit einem sekundären Programm aus der Move-List Datei rausfiltern könnte (wäre zur Laufzeit zu langsam). |
| |
| Ich habe die Movelist der ersten 140.000 Lösungen hier gezippt zum Download bereit gestellt. Die Datei ist entpackt über 200 MB gross. |
| |
Movelist (Bewegungsliste mit 140.000 Lösungen) (3.36 MB) |
| |
Weiterhin sieht mein Feld und dessen Notation (noch aus dem 45er Solitaire bedingt) so aus:
Legende: [] = Stein, . = kein Feld, <leer> = frei
Y
0 ..........................
1 ..........................
2 ..........................
3 ..........[][][]..........
4 ..........[][][]..........
5 ......[][][][][][][]......
6 ......[][][] [][][]......
7 ......[][][][][][][]......
8 ..........[][][]..........
9 ..........[][][]..........
10 ..........................
11 ..........................
12 ..........................
0 1 2 3 4 5 6 7 8 9 101112 X
In der Movelist sind die Koordinaten im [x, y]-Format aufgebaut. |
| Inzwischen hat mein Computer in circa 3000 Minuten (50 Stunden) rund 140.000 Lösungen gefunden. Hierbei hat er etwa 2,1 Milliarden Verschiebungen durchgeführt. Wenn ich das nun umrechne, ergibt das alle 15.000 Züge eine Lösung. |
| |
| Nachdem ich mir die Logdatei etwas näher angeschaut und analysiert habe, bin ich zu dem Ergebnis gekommen, dass es im Durchschnitt immer 4,5 Steine gibt, die springen können. Bei einer Steinanzahl von 31 (den letzten zähle ich nicht) sind das also 4,5^31 mögliche Verschiebungen (rund 178 * 10^18). In Verbindung mit dem obigen Ergebnis, dass es alle 15.000 Züge eine Lösung gibt, erhalte ich circa 12 * 10^15 Lösungsmöglichkeiten für ein Solitaire Spiel mit 33 Feldern. |
| |
| Nun wollte ich wissen, wie lange mein Computer daran wohl zu rechnen hätte, bis er wirklich alle Lösungen gefunden hat. In 3000 Minuten wurden 140.000 Lösungen berechnet, was pro Minute in etwa 47 Lösungen ergibt. Gehe ich nun davon aus, dass meine berechneten 12 * 10^15 Lösungen existieren, bräuchte mein Computer schlappe 500 Millionen Jahre und für die Movedatei 18 Exabyte (16,76 Milliarden Gigabyte), welche ich leider nicht habe. |
| |
| Zu diesem Zeitpunkt habe ich mich gefreut, dass ich nicht mit 45 Feldern weiter gerechnet habe. Daher lege ich das Projekt solange auf Eis, bis mein Computer eine Milliarde Mal schneller ist... |