Takuzu est un jeu de logique dans lequel vous devez compléter une grille avec des cellules contenant 0s et 1s. 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
0s et de1s 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, 2et 3. Il n'y a pas trois cellules horizontales ou verticales identiques, toutes les lignes et colonnes contiennent un nombre égal de 0s et de 1s, 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 5a trois 0s d'affilée et la colonne 2a trois 1s d'affilée, suivies de trois 0s. 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 0s et 1s, 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 1ne 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ùnest 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
0et1, 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!