Sie erhalten eine Brettposition für ein Go-Spiel und einen Zug zum Spielen. Sie müssen ausgeben, ob der Umzug legal ist oder nicht, und die neue Vorstandsposition, wenn es legal ist.
Eine kurze Erklärung der Go-Moves: Das Spiel besteht darin, abwechselnd schwarze und weiße Steine ("Steine") an leeren Stellen auf einem quadratischen Brett zu platzieren. Sätze von Teilen der gleichen Farbe, die miteinander verbunden sind (4-Wege), werden als Gruppen bezeichnet. Leere Stellen auf dem Spielplan, die an eine Gruppe angrenzen (auch 4-Wege), gelten als "Freiheiten" dieser Gruppe. Eine Gruppe mit 0 Freiheiten wird erfasst (vom Board entfernt). Ein Zug, der dazu führen würde, dass eine eigene Gruppe gefangen genommen wird ("Selbstmord"), ist illegal, es sei denn, er nimmt eine oder mehrere gegnerische Gruppen gefangen (und erhält dabei Freiheiten, so dass er nicht tatsächlich gefangen genommen wird).
Für die Betroffenen müssen Sie sich nicht mit Ko (und Superko) befassen, dh Sie können davon ausgehen, dass eine Ko-Erfassung legal ist. Wenn Sie nicht wissen, was das bedeutet, befolgen Sie einfach die obigen Regeln und es wird in Ordnung sein.
Eingabe: Eine Zahl n zwischen 2 und 19 (einschließlich), die die Kartengröße darstellt, gefolgt von n Zeilen mit n Zahlen zwischen 0 und 2 (einschließlich), die die Kartenposition darstellen, gefolgt von 3 durch Leerzeichen getrennten Zahlen, die den auszuführenden Zug darstellen. In der Brettposition bedeutet 0 eine leere Stelle, 1 einen schwarzen Stein und 2 einen weißen Stein. Der Zug gibt die Spalte, die Reihe und die Farbe (1 oder 2) des zu platzierenden Steins an. Die Spalten und Zeilen basieren auf 0 und reichen von 0 bis n-1 (einschließlich). Sie werden in derselben Reihenfolge wie die Platineneingabe gezählt.
Sie können davon ausgehen, dass die angegebene Vorstandsposition legal ist (alle Gruppen haben mindestens eine Freiheit).
Ausgabe: Eine Zeile mit 1 oder 0 (oder true / false, wenn Sie dies vorziehen), wenn der Zug legal ist oder nicht, gefolgt von der neuen Boardposition im selben Format wie die Eingabe.
Bewertung: Anzahl der Bytes des gesamten Quellcodes, kleiner ist besser. 20% zusätzliche Strafe für die Verwendung von Nicht-ASCII-Zeichen und 20% zusätzliche Strafe, wenn Ihr Code unter Linux nicht mit frei verfügbarer Software getestet werden kann.
Regeln: Keine Netzwerkverbindungen und keine Bibliotheken von Drittanbietern. Ihr Programm sollte die Standardeingabe- und -ausgabestreams oder das Standardäquivalent für Ihre Programmiersprache verwenden.
Beispiele:
1) Input:
2
10
01
1 0 2
Output:
0
2) Input:
2
10
11
1 0 2
Output:
1
02
00
3) Input:
5
22122
22021
11211
02120
00120
2 1 1
Output:
1
00100
00101
11011
02120
00120
4) Input:
6
000000
011221
121121
122221
011110
000000
4 0 1
Output:
1
000010
011221
121121
122221
011110
000000
quelle
6 000000 011221 121121 122221 011110 000000 4 0 1
Ausgabe: 0. Jetzt als Beispiel5 22100 20211 12211 12120 01120 1 1 2
Ausgabe sollte 0 sein.Python (
9121004)Gehen Sie durch: Analysieren Sie die Eingabe, prüfen Sie, ob sich die Bewegung auf einer leeren Stelle befindet, führen Sie eine Bewegung durch, initiieren Sie das "Gruppen" -Gitter, vereinfachen / minimieren Sie das Gruppengitter, indem Sie die Farbe der angrenzenden Steine (s = 0) überprüfen und wiederholen, bis sie vollständig minimiert ist für Gruppenfreiheiten (s = 1) entferne Gegnersteine für Gruppen ohne Freiheiten (s = 2), wiederhole s = 0 und s = 1, überprüfe, ob alle Spielergruppen Freiheiten haben, gib das Ergebnis zurück.
Dies kann wahrscheinlich erheblich verkürzt werden ...
InteraktivesBeispiel läuft:quelle