Takuzu è un gioco di logica in cui devi completare una griglia con celle contenenti 0
s e 1
s. La griglia deve seguire 3 regole:
- Tre celle consecutive orizzontali o verticali non possono essere uguali.
- Deve esserci un numero uguale di se
0
e1
s in ogni riga e colonna. - Non ci sono due righe uguali e nessuna colonna può essere uguale.
Diamo un'occhiata a una griglia finita:
0011
1100
0101
1010
Come si può vedere, questa scheda segue regola 1
, 2
e 3
. Non ci sono tre celle orizzontali o verticali uguali, tutte le righe e le colonne contengono un numero uguale di se 0
e1
s, e non ci sono due righe e due colonne non sono gli stessi.
Diamo un'occhiata a una griglia che non è valida:
110100
010011
011010
101100
100011
001101
C'è un sacco di problemi con questa griglia. Ad esempio, la riga 5
ha tre 0
s di fila e la colonna 2
ha tre 1
s di fila, seguite da tre0
s. Pertanto, questa non è una griglia valida.
Compito:
Il tuo compito è quello di creare un programma che, dato un array 2D di n
* n
0
s e 1
s, verifichi la scheda per vedere se è una scheda Takuzu valida e finita.
Esempi:
0011
1100
0101
1010
Questa scheda segue tutte le regole ed è quindi una scheda Takuzu valida. Per questo devi restituire un valore veritiero.
11
00
Questa non è una scheda valida - la riga 1
non segue la regola 2
. È necessario restituire un valore false per questo.
100110
101001
010101
100110
011010
011001
Questa non è una scheda valida, fallisce (solo) a causa della regola 3: la prima e la quarta riga sono uguali.
110100
001011
010011
101100
100110
011001
Questa non è una scheda valida, fallisce (solo) a causa della regola 3 - la prima e la quarta colonna sono uguali.
011010
010101
101100
010011
100110
101001
Questa è una scheda valida.
Regole e specifiche:
- Puoi presumere che tutte le schede siano quadrate di dimensioni
n * n
, doven
è un numero intero pari positivo. - Puoi presumere che tutte le schede siano finite.
- È possibile accettare input come un array 2D contenente valori che significano
0
e1
, o come una stringa. - È necessario generare valori di verità e falsità coerenti per le schede di verità e falsità e i valori che rappresentano "verità" e "falsità" non possono essere gli stessi.
Questo è code-golf , quindi vince il codice più breve in byte!