• Aucun résultat trouvé

7 8 9 M M M 4 5 6 M M M 1 2 3 M M M

N/A
N/A
Protected

Academic year: 2022

Partager "7 8 9 M M M 4 5 6 M M M 1 2 3 M M M"

Copied!
2
0
0

Texte intégral

(1)

DUT Info Structures de donn´ees et algorithmes fondamentaux 2019–2020 TP 3 - Sudoku

Unegrille de Sudokuest une matrice `a 9 lignes et 9 colonnes, dont certaines cases contiennent un entier entre 1 et 9. Le but du jeu est de trouver une solution valide, c’est-`a-dire de remplir la grille donn´ee de mani`ere `a ce que chaque ligne, chaque colonne et chacune des sous-matrices M1, M2, . . ., M9 (voir illustration ci-dessous) contienne les nombres de 1 `a 9 exactement une fois.

M

1

M

2

M

3

M

4

M

5

M

6

M

7

M

8

M

9

Des exemples de grilles remplies (valides et non valides) sont donn´es plus bas. L’objectif de ce TP est de compl´eter le programme qui vous est fourni (sudoku-init.py sur la page du cours) afin de g´en´erer et d’afficher des puzzles ainsi que des grilles valides ou non et d’ˆetre capable de les v´erifier. Les parties que vous avez le droit de modifier sont clairement indiqu´ees dans le programme. Vous pouvez rajouter autant de fonctions auxiliaires que vous voulez, mais il est imp´eratif de conserver le nom et le format des fonctions qui existent d´ej`a dans le fichier.

1. Compl´etez la fonction matrice_aleatoire() pour qu’elle renvoie une matrice 9 × 9 d’entiers entre 1 et 9, choisis au hasard.

2. Compl´etez la fonctionverifier_matrice(M), qui prend en param`etre une matrice 9×9 d’entiers, afin que cette fonction renvoie True si la matrice est une solution valide et False sinon, sans utiliser d’autres types de structures que les listes. Remarquez que les v´erifications `a effectuer sont assez r´ep´etitives; il est donc plus que recommand´e de cr´eer une ou des fonctions auxiliaires pour vous faciliter la tˆache et pour clarifier le code.

Apr`es avoir fini les deux premi`eres questions, l’affichage du programme apr`es avoir cliqu´e les boutons “Remplir (al´eatoire)” puis “V´erifier” ressemblera `a ceci:

3. La fonction grille_valide_aleatoire()renvoie une grille Sudoku valide; mais comme vous pouvez le voir, cette grille n’est pas tr`es al´eatoire. Modifiez la fonction de mani`ere

`

a renvoyer d’autres solutions valides plus vari´ees. Pour ce faire, on peut “renommer” les

´el´ements de la matrice en appliquant un d´ecalage modulaire: par exemple, on pourrait remplacerM[i][j] par(M[i][j] + 5) % 9 + 1.

Page 1 / 2

(2)

DUT Info Structures de donn´ees et algorithmes fondamentaux 2019–2020 Apr`es avoir fini cette question, l’affichage du programme apr`es avoir cliqu´e les boutons

“Remplir (valide)” puis “V´erifier” ressemblera `a ceci:

4. Compl´etez la fonction generer_puzzle() pour qu’elle renvoie une grille al´eatoire par- tiellement remplie. Pour ce faire, on peut partir d’une grille remplie valide, et effacer des nombres au hasard (il faut ´evidemment qu’il en reste suffisamment; on en laisse en g´en´eral entre 17 et 25). Pour mat´erialiser les cases vides, utilisez 0.

Apr`es avoir fini cette question, l’affichage du programme apr`es avoir cliqu´e le bouton

“Puzzle” ressemblera `a ceci:

5. On peut encore plus varier les grilles en alternant la transformation de la question 3 et des sym´etries par rapport aux diagonales, `a la ligne du milieu, ou `a la colonne du milieu de la matrice. Modifiez la fonction grille_valide_aleatoire() pour qu’elle renvoie des grilles al´eatoires plus vari´ees sur base de ce principe (le nombre de transformations `a appliquer peut ´egalement ˆetre al´eatoire).

Page 2 / 2

Références

Documents relatifs

- Puis tu verras que pour d’autres lignes, colonnes et carrés de 9 cases, c’est

- Cela te permet alors de compléter le carré à gauche au milieu, puisqu’il ne manque plus

Ùn c’hè chè una regula : ogni sciffru ùn ci pò esse chè una volta nentr’à una culonna, nentr’à una linea è nentr’à un quadrettu

Une seule règle prévaut : chaque chiffre ne doit figurer qu’une seule fois dans la même colonne, ligne et région (carré 3X3). Complétez

Sachant qu’un match dure deux mi-temps de trois quarts dure deux mi-temps de trois quarts d’heure, combien de temps Zlatini a-t-il joué.. LE CLASSEMENT

[r]

[r]

[r]