nsi:projets:tableaux:sudoku
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:projets:tableaux:sudoku [2021/12/27 12:07] – ↷ Page déplacée de nsi:tableaux:sudoku à nsi:projets:tableaux:sudoku goupillwiki | nsi:projets:tableaux:sudoku [2024/12/05 16:39] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Solveur de Sudoku ====== | ====== Solveur de Sudoku ====== | ||
| - | {{page> | + | {{page> |
| ===== Méthode de résolution ===== | ===== Méthode de résolution ===== | ||
| - | {{page> | + | {{page> |
| ===== Implémentation ===== | ===== Implémentation ===== | ||
| Ligne 11: | Ligne 11: | ||
| ==== Choix d'une représentation pour la grille ==== | ==== Choix d'une représentation pour la grille ==== | ||
| - | {{page> | + | {{page> |
| ==== Fonctions utiles ==== | ==== Fonctions utiles ==== | ||
| Ligne 20: | Ligne 20: | ||
| # solveur de sudoku | # solveur de sudoku | ||
| - | # grille représente une grille de sudoku. | + | # grille représente une grille de sudoku. |
| - | def connnus_ligne(grille, | + | def read_cell(grille: |
| + | ''' | ||
| + | renvoie le contenu de la grille pour ligne et colonne indiquée | ||
| + | ''' | ||
| + | |||
| + | def set_cell(grille: | ||
| + | ''' | ||
| + | Écrit la valeur désirée dans la grille, à la ligne et colonne indiquée. | ||
| + | ''' | ||
| + | |||
| + | def connnus_ligne(grille:list, ligne:int) -> list: | ||
| ''' | ''' | ||
| cette fonction renvoie tous les chiffres déjà écrits dans une certaine ligne | cette fonction renvoie tous les chiffres déjà écrits dans une certaine ligne | ||
| Ligne 29: | Ligne 39: | ||
| ''' | ''' | ||
| | | ||
| - | def connus_colonne(grille, | + | def connus_colonne(grille:list, colonne:int) -> list: |
| ''' | ''' | ||
| même chose pour une colonne | même chose pour une colonne | ||
| ''' | ''' | ||
| - | def connus_region(grille, | + | def connus_region(grille:list, ligne:int, colonne:int) -> list: |
| ''' | ''' | ||
| même chose pour une région | même chose pour une région | ||
| ''' | ''' | ||
| | | ||
| - | def restants(grille, | + | def restants(grille:list, ligne:int, colonne:int) -> list: |
| ''' | ''' | ||
| cette fonction, pour une certaine ligne et colonne, | cette fonction, pour une certaine ligne et colonne, | ||
| Ligne 48: | Ligne 58: | ||
| ''' | ''' | ||
| - | def solve(grille): | + | def solve(grille:list): |
| ''' | ''' | ||
| - | | + | |
| pour chaque case vide, regarde les candidats possibles, | pour chaque case vide, regarde les candidats possibles, | ||
| s'il n'y en a qu'un seul, écrit ce candidat dans la case. | s'il n'y en a qu'un seul, écrit ce candidat dans la case. | ||
| Ligne 66: | Ligne 76: | ||
| * Bien documenter les fonctions | * Bien documenter les fonctions | ||
| * prévoir au moins un exemple de résolution | * prévoir au moins un exemple de résolution | ||
| + | </ | ||
| + | |||
| + | <WRAP danger> | ||
| + | J'ai vu de nombreuses fois des élèves utilisant une méthode toute faite à base de fonction récursive et à laquelle ils ne comprenaient pas grand chose... | ||
| + | |||
| + | Cette méthode est **interdite** pour ce projet : pas de fonction récursive. | ||
| </ | </ | ||
nsi/projets/tableaux/sudoku.1640603263.txt.gz · Dernière modification : de goupillwiki
