Takuzu ist ein Logikspiel, in dem Sie ein Gitter mit Zellen vervollständigen müssen, die 0s und 1s enthalten. Das Gitter muss 3 Regeln folgen:
- Keine drei horizontalen oder vertikalen aufeinanderfolgenden Zellen können gleich sein.
- Es muss eine gleiche Anzahl von
0s und sein1s 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, 2und 3. Es gibt keine drei horizontalen oder vertikalen Zellen, die gleich sind, alle Zeilen und Spalten enthalten die gleiche Anzahl von 0s und 1s, 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 5hat 0eine Zeile drei Sekunden in einer Zeile und eine Spalte 2drei 1Sekunden in einer Zeile, gefolgt von drei 0Sekunden. Daher ist dies kein gültiges Raster.
Aufgabe:
Ihre Aufgabe ist es, ein Programm zu erstellen, das bei einem 2D-Array von n* n 0s 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 1folgt 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 * nhabennes 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
0und vornehmen1oder 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!