Wir haben bereits Minesweeper-Felder erzeugt , aber jemand muss diese erzeugten Minen wirklich fegen, bevor PCG explodiert!
Ihre Aufgabe ist es, einen Minesweeper-Solver zu schreiben, der mit einer leicht modifizierten Version der akzeptierten Lösung von "Working Minesweeper" kompatibel ist (Aktionen werden durch Leerzeichen getrennt, um größere Felder zuzulassen).
Eingabe: Ein Minesweeper-Feld, Felder durch Leerzeichen getrennt. Die erste Zeile gibt die Gesamtzahl der Minen an.
x
: Unberührt!
: Flagge- Ziffer: Anzahl der Minen um dieses Feld
Beispiel:
10
0 0 1 x x x x x
0 0 2 x x x x x
0 0 2 ! x x x x
0 0 1 2 x x x x
0 0 0 1 x x x x
1 1 0 2 x x x x
x 1 0 2 x x x x
1 1 0 1 x x x x
Ausgabe: Ihr nächster Schritt im Format action row column
(beginnend bei Null)
Gültige Aktionen:
0
: Öffne es1
: Platziere eine Flagge
Beispiel:
0 1 2
Regeln:
- Sie schreiben ein vollständiges Programm, das ein einzelnes Feld als Eingabe (entweder STDIN oder Befehlszeilenargumente) und eine einzelne Aktion (STDOUT) ausgibt. Aus diesem Grund können Sie keine Status speichern, außer für
!
. - Ihre Wahl muss den besten Überlebenschancen folgen. (dh wenn es einen 100% sicheren Zug gibt, nimm ihn)
- Das ist Code-Golf ; die kürzeste Lösung (in UTF-8 Bytes) gewinnt
Tests:
Diese Tests dienen dem Zweck, auf häufig auftretende eindeutige Situationen zu prüfen. Ihr Programm muss für jedes Testfeld geeignet sein.
Im:
4
x x x x
1 2 x x
0 1 2 x
0 0 1 x
Out (eine davon):
1 1 2
0 0 2
0 1 3
Im:
2
x x x
1 ! x
1 1 x
Out (eine davon):
0 0 0
0 0 1
0 1 2
0 2 2
1 0 2
Im:
10
x x x x x x x x
1 3 3 x x x x x
0 1 ! 3 3 4 x x
0 2 3 ! 2 3 x x
0 1 ! 2 2 ! x x
Out (eine davon):
1 1 5
1 0 2
Im:
2
x x x
2 3 1
! 1 0
Out (eine davon):
0 0 1
1 0 0
1 0 2
0 0 2
oder 0 1 3
. Ich kann nicht sehen, wie einer der beiden als sicher gelten würde. (Ich muss im Minensuchboot nicht gut genug sein ...)
F
oder P
sieht besser aus Flagge als !
:)