sudogrille.ads
-- -- Cet acteur permet de représenter une grille de Sudoku en cours de résolution -- package SudoGrille is -- La taille d'une grille de Sudoku est de 9x9 Taille : constant Integer := 9 ; -- La taille d'une sous-grille est de 3x3 SousTaille : constant Integer := 3 ; ----------------------------- -- TYPES -- ----------------------------- -- Chaque case de la grille de Sudoku contient un tableau 'Les_Chiffres_Possibles' de 9 booléens. -- Par exemple le tableau [ True ; True ; False ; False ; ... ] -- indique que les chiffes 1 et 2 sont possibles dans la case, les chiffres 3 et 4 sont impossibles, etc. -- Ce tableau contient toujours 9 cases numérotées de 1 à 9. type Les_Chiffres_Possibles is array (Integer range 1..Taille) of Boolean ; -- Une grille de Sudoku : dans chaque case on indique les chiffres possibles. -- Les dimensions de la grille sont toujours les mêmes : 9 lignes et 9 colonnes numérotées de 1 à 9 type Une_Grille is array (Integer range 1..Taille, Integer range 1..Taille) of Les_Chiffres_Possibles ; -- Pour déclarer une variable de type Une_Grille, on écrit : -- Ma_Variable_Grille_De_Sudoku : Une_Grille ; -- (Ne pas préciser la taille de la matrice car elle est déjà contenue dans la définition du type Une_Grille). -- La grille est initialisée automatiquement par l'acteur avec la fonction 'Fabrique', ci-dessous. -- On doit lui donner le niveau de difficulté souhaité. type Un_Niveau is (Piece_Of_Cake, Moyen, Difficile, Diabolique) ; --------------------------------------- -- SOUS-PROGRAMMES -- --------------------------------------- -- Attend que l'utilisateur appuie sur la touche 'Entree' procedure Attend_Entree ; -- Fabrique une grille de Sudoku du niveau indiqué. -- Les cases déjà remplies sont initialisées avec une seule valeur possible sur les 9. -- Les cases vides sont initialisées avec toutes les valeurs possibles (1..9). function Fabrique (Niveau : Un_Niveau) return Une_Grille ; -- Affiche la grille indiquée procedure Affiche (Grille : Une_Grille) ; -- Si Echoue vaut TRUE, fait échouer le programme en affichant le message. procedure Failif (Echoue : Boolean ; Message : String) ; -- -- Pour la deuxième partie -- -- Renvoie un tableau 'Les_Chiffres_Possibles' où toutes les cases sauf une sont à False. -- La case 'Valeur' est à True. function Fixe(Valeur : Integer) return Les_Chiffres_Possibles ; end SudoGrille ;




