Takuzu est un jeu de logique dans lequel vous devez compléter une grille avec des cellules contenant 0
s et 1
s. La grille doit suivre 3 règles:
- Trois cellules consécutives horizontales ou verticales ne peuvent pas être identiques.
- Il doit y avoir un nombre égal de
0
s et de1
s dans chaque ligne et colonne. - Deux lignes ne peuvent pas être identiques et deux colonnes ne peuvent pas être identiques.
Regardons une grille finie:
0011
1100
0101
1010
Comme vous pouvez le voir, ce tableau suit la règle 1
, 2
et 3
. Il n'y a pas trois cellules horizontales ou verticales identiques, toutes les lignes et colonnes contiennent un nombre égal de 0
s et de 1
s, et pas deux lignes et pas deux colonnes sont identiques.
Regardons une grille qui n'est pas valide:
110100
010011
011010
101100
100011
001101
Il y a un tas de problèmes avec cette grille. Par exemple, la ligne 5
a trois 0
s d'affilée et la colonne 2
a trois 1
s d'affilée, suivies de trois 0
s. Par conséquent, ce n'est pas une grille valide.
Tâche:
Votre tâche consiste à créer un programme qui, étant donné un tableau 2D de n
* n
0
s et 1
s, vérifie la carte pour voir s'il s'agit d'une carte Takuzu valide et terminée.
Exemples:
0011
1100
0101
1010
Cette planche suit toutes les règles, et est donc une planche Takuzu valide. Vous devez renvoyer une valeur véridique pour cela.
11
00
Ce tableau n'est pas valide - la ligne 1
ne suit pas la règle 2
. Vous devez renvoyer une valeur de falsey pour cela.
100110
101001
010101
100110
011010
011001
Ce n'est pas une carte valide, elle échoue (uniquement) en raison de la règle 3 - les première et quatrième lignes sont identiques.
110100
001011
010011
101100
100110
011001
Ce n'est pas une carte valide, elle échoue (uniquement) en raison de la règle 3 - les première et quatrième colonnes sont les mêmes.
011010
010101
101100
010011
100110
101001
Ceci est une carte valide.
Règles et spécifications:
- Vous pouvez supposer que toutes les planches sont de dimensions carrées
n * n
, oùn
est un entier pair positif. - Vous pouvez supposer que toutes les planches sont terminées.
- Vous pouvez prendre l'entrée comme un tableau 2D contenant des valeurs signifiant
0
et1
, ou comme une chaîne. - Vous devez générer des valeurs de vérité et de falsey cohérentes pour les tableaux de vérité et de falsey, et les valeurs représentant "vérité" et "falsey" ne peuvent pas être les mêmes.
C'est le code-golf , donc le code le plus court en octets gagne!