Peg Solitaire ist ein beliebtes Spiel, das normalerweise alleine gespielt wird. Das Spiel besteht aus einer Reihe von Stiften und einem Brett, das in ein Gitter unterteilt ist - normalerweise ist das Brett nicht rechteckig, aber für diese Herausforderung werden wir dies annehmen.
Jeder gültige Zug ermöglicht es einem, einen einzelnen Stift zu entfernen, und das Ziel ist es, so zu spielen, dass nur ein einzelner Stift übrig bleibt. Jetzt muss eine gültige Bewegung in eine Richtung (Nord, Ost, Süd oder Ost) erfolgen und über einen Stift springen, der entfernt werden kann.
Beispiele
Lassen Sie .
leere Felder auf dem Brett sein und Zahlen sind Stifte. Bei der folgenden Bewegung wird 1
eines nach rechts verschoben und 2
vom Brett entfernt:
..... .....
.12.. -> ...1.
..... .....
Eine Bewegung muss immer über einen einzelnen Stift springen, daher ist Folgendes nicht gültig:
...... ......
.123.. -> ....1.
...... ......
Hier sind einige gültige Konfigurationen nach jeweils einem Zug:
...1... ...1... ..71... ..71...
.2.34.5 ---> .24...5 ---> .2....5 ---> ......5
.678... (4W) .678... (7N) .6.8... (2S) ...8...
....... ....... ....... .2.....
Herausforderung
Bei einer anfänglichen Kartenkonfiguration und einer anderen Konfiguration wird ausgegeben, ob die andere Konfiguration durch sukzessives Bewegen der Stifte wie oben beschrieben erreicht werden kann.
Regeln
- Die Eingabe erfolgt durch eine Matrix / Liste von Listen / ... von Werten, die einen leeren Raum (z. B. Null oder Falsch) oder Stifte (z. B. Nicht-Null oder Wahr) angeben.
- Sie können und annehmen
- Sie können true / ungleich Null verwenden, um Leerzeichen anzugeben, und umgekehrt, wenn dies hilfreich ist
- Die Ausgabe besteht aus zwei unterschiedlichen Werten (einer der Werte kann abweichen), die angeben, ob die Endkonfiguration erreicht werden kann (z. B. falsch / wahr ,
[]
/[list of moves]
..).
Testfälle
initial goal -> output
[[1,0,0],[1,1,0],[0,1,0]] [[0,0,0],[0,1,0],[1,1,0]] -> True
[[1,0,0],[1,1,0],[0,1,0]] [[0,0,1],[0,1,1],[0,0,0]] -> False
[[0,0,0],[1,0,0],[0,0,0]] [[0,0,0],[0,0,1],[0,0,0]] -> False
[[0,0,0],[1,1,0],[0,0,0]] [[0,0,0],[0,1,1],[0,0,0]] -> False
[[0,0,0,0],[1,1,1,0],[0,0,0,0]] [[0,0,0,0],[0,0,0,1],[0,0,0,0]] -> False
[[1,0,0],[1,1,0],[1,1,1],[1,1,1]] [[0,0,1],[0,1,0],[1,0,0],[0,0,1]] -> True
[[1,0,0],[1,1,0],[1,1,1],[1,1,1]] [[1,0,0],[0,0,0],[0,0,0],[0,0,0]] -> False
[[1,0,1,1],[1,1,0,0],[1,1,1,0],[1,0,1,0]] [[0,0,1,0],[1,0,0,0],[1,0,1,0],[1,0,0,1]] -> True
[[1,0,1,1],[1,1,0,0],[1,1,1,0],[1,0,1,0]] [[0,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]] -> False
[[1,0,0,0],[1,1,0,0],[1,1,1,0],[1,0,1,0]] [[0,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]] -> True
[[0,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]] [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]] -> False
[[0,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]] [[1,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] -> False
[[0,0,0,1,0,0,0],[0,1,0,1,1,0,1],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0]] [[0,0,0,1,0,0,0],[0,1,0,1,1,0,1],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0]] -> True
[[0,0,0,1,0,0,0],[0,1,0,1,1,0,1],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0]] [[0,0,0,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]] -> True
[[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[1,1,1,1,1,1,1],[1,1,1,0,1,1,1],[1,1,1,1,1,1,1],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0]] [[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[1,1,1,1,1,1,1],[1,1,1,1,0,0,1],[1,1,1,1,1,1,1],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0]] -> True
[[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[1,1,1,1,1,1,1],[1,1,1,0,1,1,1],[1,1,1,1,1,1,1],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0]] [[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]] -> True
7
in Ihrem Beispiel mit Peg passiert ? Warum verschwindet es nach dem2
Umzug nach Süden?