Trois grilles correctes:
A = [ [3,6,7,9,4,1,2,8,5],
[1,5,2,6,8,3,4,9,7],
[4,9,8,7,5,2,1,6,3],
[7,4,6,1,9,5,8,3,2],
[8,1,9,2,3,7,6,5,4],
[2,3,5,8,6,4,7,1,9],
[9,2,1,5,7,8,3,4,6],
[5,8,4,3,2,6,9,7,1],
[6,7,3,4,1,9,5,2,8]
]
B = [ [4,2,7,9,5,1,6,8,3],
[6,3,9,2,8,4,7,5,1],
[8,5,1,7,6,3,9,2,4],
[5,1,4,8,9,6,3,7,2],
[9,7,6,4,3,2,8,1,5],
[2,8,3,1,7,5,4,9,6],
[3,9,2,6,1,8,5,4,7],
[7,4,5,3,2,9,1,6,8],
[1,6,8,5,4,7,2,3,9]
]
C = [ [9,8,5,1,3,2,4,7,6],
[2,7,3,9,4,6,5,1,8],
[4,1,6,5,7,8,9,2,3],
[1,6,7,4,8,9,2,3,5],
[8,5,2,6,1,3,7,9,4],
[3,9,4,2,5,7,8,6,1],
[7,4,1,3,9,5,6,8,2],
[5,2,9,8,6,1,3,4,7],
[6,3,8,7,2,4,1,5,9]
]
Une grille incorrecte (problème en ligne 2):
D = [ [9,8,5,1,3,2,4,7,6],
[2,9,3,9,4,6,5,1,8],
[4,1,6,5,7,8,9,2,3],
[1,6,7,4,8,9,2,3,5],
[8,5,2,6,1,3,7,9,4],
[3,9,4,2,5,7,8,6,1],
[7,4,1,3,9,5,6,8,2],
[5,2,9,8,6,1,3,4,7],
[6,3,8,7,2,4,1,5,9]
]
CHIFFRES = (1,2,3,4,5,6,7,8,9)
def verifieLigne(grille, numero_de_ligne):
"""
grille -- matrice suddoku
numero_de_ligne -- numéro de ligne de la grille (entre 0 et 8)
renvoie True si la ligne contient chacun des chiffres une fois et une seule,
False sinon.
"""
for chiffre in CHIFFRES:
if chiffre not in grille[numero_de_ligne]:
return False
return True
def verifieLignes(grille):
"""
grille -- matrice sudoku
renvoie True si chaque ligne respecte les règles du Sudoku, False sinon.
"""
for numero_de_ligne in range(9):
if not verifieLigne(grille, numero_de_ligne):
return False
return True
verifieLignes(A)
verifieLignes(D)