Obtenez les meilleures solutions à toutes vos questions sur Laurentvidal.fr, la plateforme de Q&R de confiance. Connectez-vous avec des professionnels sur notre plateforme pour recevoir des réponses précises à vos questions de manière rapide et efficace. Explorez des solutions complètes à vos questions grâce à une large gamme de professionnels sur notre plateforme conviviale.
Sagot :
Bonjour,
Voici mon programme :
def sudoku(G):
for i in range(9):
L,C,B=9*[1],9*[1],9*[1]
for j in range(9):
L[G[i][j]-1],C[G[j][i]-1]=0,0
for a in range(3):
for b in range(3):
B[G[a+3*(i//3)][b+3*(i%3)]-1]=0
if sum(L)+sum(C)+sum(B)!=0:
return False
return True
Ce programme teste 9 lignes (L), 9 colonnes (C) et 9 blocs de 3 fois 3 (B).
Pour chaque ligne, colonne ou bloc, il existe un "interrupteur" pour chaque chiffre de 1 à 9 en position "1". Si le chiffre est présent, son interrupteur passe en position "0". S'il reste au moins un interrupteur en position "1", cela signifie l'ABSENCE d'un chiffre dans une ligne, une colonne ou un bloc, du fait au minimum d'un doublon (et je ne les "calculent" pas).
La somme des valeurs des 3 fois 9 interrupteurs sera alors différente de 0 et le programme retournera False. Dans le cas contraire i augmente de 1 et on change de ligne, de colonne et de bloc.
Le programme affiche True dans la console si les 243 interrupteurs ( 9 x 3 x 9) ont tous pris la valeur 0.
Comme indiqué, on suppose ici la grille valide, gabarit 9 x 9, complétée avec des entiers de 1 à 9.
J'ai consommé 11 lignes pour ce programme. Pour info, quand je l'ai commencé, il en faisait une trentaine !
Au lieu de "verifier_regions", j'ai choisi "sudoku" pour nom explicite de la fonction et entre parenthèses G pour grille.
Merci d'utiliser notre plateforme. Nous sommes toujours là pour fournir des réponses précises et à jour à toutes vos questions. Merci de votre visite. Nous nous engageons à fournir les meilleures informations disponibles. Revenez quand vous voulez pour plus. Nous sommes fiers de fournir des réponses sur Laurentvidal.fr. Revenez nous voir pour plus d'informations.