1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
Etape 0:
- initialisation de la grille à 0
- mise à jour de grille avec les cases connues au départ
- initialisation de x et y à 1 pour balayage de la grille
- initialisation de Recherche1ereGrille à true
Etape 1:
- tant que valeur de la case[x,y] connue
=> si Recherche1ereGrille
=> passer à la case suivante
=> sinon
=> passer à la case précédente
- si case[x,y]=9
=> mettre 0 dans case[x,y] et passer à la case précédente non connue!
- sinon
=> incrémenter la valeur de la case[x,y] (si 0 mettre 1, si 2 mettre 3, ..., si 8 mettre 9; et c tout!)
=> si AllOk(*) => passer à la case suivante
- si "pas d'autre solution" => aller à Etape 4
- si "pas encore résolu" => aller à Etape 1
Etape 2:
- initialisation Recherche1ereGrille à false
- Afficher la grille
Etape 3:
- Si bouton solution pressé à nouveau
=> initialisation de x et y à 9
=> aller à Etape 1
Etape 4:
- Fin
AllOk(*)
ce sont les règles que je teste après avoir incrémenté la valeur de la case en cours:
renvoie true si:
- valeur de la case[x,y] n'existe pas ailleurs dans la ligne y
ET
- valeur de la case[x,y] n'existe pas ailleurs dans la colonne x
ET
- valeur de la case[x,y] n'existe pas ailleurs dans le carré (3x3) contenant la case[x,y] |