Laurentvidal.fr facilite la recherche de réponses à toutes vos questions avec l'aide de notre communauté active. Découvrez des solutions complètes à vos questions grâce à des professionnels expérimentés dans divers domaines sur notre plateforme. Connectez-vous avec une communauté d'experts prêts à vous aider à trouver des solutions précises à vos interrogations de manière rapide et efficace.

[PYTHON] Aide exo niveau lycée

Bonsoir, quelqu’un qui s’y connaît un peu en python pourrait m’aider à faire la fonction « vérifier régions », pour le reste je peux me débrouiller :)

Écrire une fonction verifier sudoku capable de vérifier si la grille passée en paramètre, sous forme d'une matrice 9 x 9 d'entiers, est une solution au problème du sudoku. La fonction retournera la réponse (True ou False).

Cette fonction devra utiliser les trois fonctions suivantes (je fais juste la troisième) :

« verifier regions » qui prend en paramètre une grille sous forme de matrice à deux dimensions et vérifie si toutes les régions sont valides
(c'est-à-dire que dans chaque région, chaque chiffre apparaît une et
une seule fois)


PYTHON Aide Exo Niveau Lycée Bonsoir Quelquun Qui Sy Connaît Un Peu En Python Pourrait Maider À Faire La Fonction Vérifier Régions Pour Le Reste Je Peux Me Débr class=

Sagot :

vaison

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 nous efforçons de fournir des réponses précises et à jour à toutes vos questions. Revenez bientôt. Merci de votre passage. Nous nous efforçons de fournir les meilleures réponses à toutes vos questions. À la prochaine. Visitez Laurentvidal.fr pour obtenir de nouvelles et fiables réponses de nos experts.