Micro-exercice de programmation 3 : analyse fonctionnelle et algorithme
Par Ninoka • 1 Décembre 2017 • 1 151 Mots (5 Pages) • 846 Vues
...
– Dans cette forme, sélectionner deux case ayant deux valeurs possibles seulement.
2.3 – Si les valeurs possibles sont identiques
Alors il s’agit d’une paire exclusive
3 – Enlever ces deux valeurs possibles des autres cases ayant des valeurs possibles, à l’exception des cases contenant ces paires exclusives.
compteur1 = 0 // Place les chiffres dans Tempo[9][9]. Pas influencé par la forme.
compteur11 = 1 // Permet de remplir resultat[9]
case[9][9] // Grille de sudoku 9x9
Test1[9] // Nombre de valeurs possibles par case
Test2 = 0 // Si Test2 = 9, il s’agit d’une paire exclusive
Tempo[9][9] // Valeurs possibles par case
resultat[9] // Valeurs à exclure pour la case sélectionnée
Choix // Choix à faire : Ligne, Colonne ou Carré
PositionLigne // Numéro de la ligne de la cellule sélectionnée de 1 à 9
PositionColonne // Numéro de la ligne de la cellule sélectionnée de 1 à 9
Forme // Ligne, colonne ou carré
// Information entrée par le joueur
Entrée PositionLigne
Entrée PositionColonne
Entrée Forme
// Détermine les paramètres en fonction du choix de la forme
Choisir Cas Choix
Cas Ligne
DebutLigne = PositionLigne
DebutColonne = 1
FinLigne = PositionLigne
FinColonne = 9
Cas Colonne
DebutLigne = 1
DebutColonne = PositionColonne
FinLigne = 9
FinColonne = PositionColonne
Cas Carré
DebutLigne = (PositionLigne -1 \ 3) *3 +1
DebutColonne = (PositionColonne -1 \ 3) * 3 +1
FinLigne = DebutLigne +2
FinColonne = DebutColonne + 2
Fin Choisir
// Recherche les valeurs existantes de la ligne, de la colonne et du carré à l’intersection
Pour ligne de DebutLigne jusqu’à FinLigne
Pour colonne de DebutColonne jusqu’à FinColonne
compteur1 = compteur1 +1
Si case[ligne, colonne] est vide alors
Pour compteur2 de 1 à 9
// Copie les valeurs existantes de la ligne à l’intersection de la case
Si case[ligne, compteur2] n’est pas vide alors
// La valeur 1 indique que la valeur est présente. Le chiffre sera récupéré
// à l’aide de l’indice du tableau
Tempo[ compteur1, case [ligne, compteur2] ] = 1
Fin Si
// Copie les valeurs existantes de la colonne à l’intersection de la case
Si case [compteur2, colonne] n’est pas vide alors
// La valeur 1 indique que la valeur est présente. Le chiffre sera récupéré
// à l’aide de l’indice du tableau
Tempo[ compteur1, case [compteur2, colonne] ] = 1
Fin Si
Fin Pour
// Copie les valeurs existantes du carré à l’intersection de la case
Pour compteur3 de 0 à 2
Pour compteur4 de 0 à 2
Si case[DebutLigne + compteur3, DebutColonne + compteur4]
n’est pas vide alors
// La valeur 1 indique que la valeur est présente. Le chiffre sera
// récupéré à l’aide de l’indice du tableau
Tempo[ compteur1, case [DebutLigne + compteur3,
DebutColonne + compteur4] ] = 1
Fin SI
Fin Pour
Fin Pour
Fin Si
Fin Pour
Fin Pour
// Compte le nombre de valeurs existantes par cellules
Pour compteur5 de 1 à 9
Pour compteur6 de 1 à 9
Si Tempo[compteur5, compteur6] =1 alors
Test1[compteur5] = Test1[compteur5] + 1
Fin Si
Fin Pour
Fin Pour
Pour compteur7 de 1 à 9
Pour compteur8 de (compteur7 + 1) à 9
// Vérifie que la case contienne uniquement deux valeurs possibles
Si Test1[compteur7] = 7 et Test1[compteur8] = 7 alors
// Recherche une paire exclusive
Pour compteur9 de 1 à 9
// Vérifie que les valeurs sont identiques
Si Tempo[compteur7, compteur9] = Tempo[compteur8, compteur9] alors
Test2
...