Takuzu ist ein Logikspiel, in dem Sie ein Gitter mit Zellen vervollständigen müssen, die 0
s und 1
s enthalten. Das Gitter muss 3 Regeln folgen:
- Keine drei horizontalen oder vertikalen aufeinanderfolgenden Zellen können gleich sein.
- Es muss eine gleiche Anzahl von
0
s und sein1
s in jeder Zeile und Spalte geben. - Keine zwei Zeilen können gleich sein und keine zwei Spalten können gleich sein.
Schauen wir uns ein fertiges Gitter an:
0011
1100
0101
1010
Wie Sie sehen können, folgt das Board Regel 1
, 2
und 3
. Es gibt keine drei horizontalen oder vertikalen Zellen, die gleich sind, alle Zeilen und Spalten enthalten die gleiche Anzahl von 0
s und 1
s, und keine zwei Zeilen und keine zwei Spalten sind gleich.
Schauen wir uns ein Gitter an, das nicht gültig ist:
110100
010011
011010
101100
100011
001101
Es gibt eine Reihe von Problemen mit diesem Raster. Beispielsweise 5
hat 0
eine Zeile drei Sekunden in einer Zeile und eine Spalte 2
drei 1
Sekunden in einer Zeile, gefolgt von drei 0
Sekunden. Daher ist dies kein gültiges Raster.
Aufgabe:
Ihre Aufgabe ist es, ein Programm zu erstellen, das bei einem 2D-Array von n
* n
0
s und1
erstellen s die Karte überprüft, um festzustellen, ob es sich um eine gültige, fertige Takuzu-Karte handelt.
Beispiele:
0011
1100
0101
1010
Dieses Board folgt allen Regeln und ist daher ein gültiges Takuzu-Board. Sie müssen einen wahrheitsgemäßen Wert dafür zurückgeben.
11
00
Dies ist keine gültige Tafel - die Reihe 1
folgt nicht der Regel2
. Sie müssen dafür einen falschen Wert zurückgeben.
100110
101001
010101
100110
011010
011001
Dies ist kein gültiges Board, es schlägt (nur) aufgrund von Regel 3 fehl - die erste und vierte Reihe sind gleich.
110100
001011
010011
101100
100110
011001
Dies ist kein gültiges Board, es schlägt (nur) aufgrund von Regel 3 fehl - die erste und vierte Spalte sind gleich.
011010
010101
101100
010011
100110
101001
Dies ist eine gültige Karte.
Regeln und Spezifikationen:
- Sie können davon ausgehen, dass alle Bretter quadratische Abmessungen haben
n * n
habenn
es sich um eine positive gerade Ganzzahl handelt. - Sie können davon ausgehen, dass alle Bretter fertig sind.
- Sie können Eingaben als 2D-Array mit Werten für
0
und vornehmen1
oder als Zeichenfolge vornehmen. - Sie müssen für Truthy- und Falsey-Boards konsistente Truthy- und Falsey-Werte ausgeben. Die Werte für "Truthy" und "Falsey" dürfen nicht identisch sein.
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!