Vous êtes sur la page 1sur 2

Techniques de programmation

structure

TP de synthse
Grilles de Sudoku
Problme :
On va prsent raliser une application complte, en utilisant une
architecture sous forme de sous-procdures et de fonction. Cette
application a pour tche de gnrer des grilles de Sudoku. Une telle grille
est forme de 81 cases (9 x 9), contenant un chiffre entre 1 et 9, et dans
laquelle aucune ligne, aucune colonne et aucune "sous-grille" de 3x3, ne
contient deux fois le mme chiffre.
Pour parvenir nos fins, on va utiliser une mthode particulirement
barbare et inefficace : la gnration alatoire des 81 valeurs de la grille.
On vrifiera alors que la grille satisfait aux critres ; si tel n'est pas le
cas... on recommence la gnration jusqu' ce que la grille convienne. En
pratique, la probabilit de gnrer une grille adquate est si faible que
cette mthode prendra sans doute beaucoup de temps, mais passons.
Tout le truc est de piger que vrifier que les neuf cases d'une ligne,
d'une colonne, ou d'une sous-grille, sont toutes diffrentes, c'est en ralit
du pareil au mme. On va donc factoriser le code procdant cette
vrification sous la forme d'une fonction boolenne TousDiffrents, qui
on passera un tableau de 9 valeurs en argument. La fonction renverra
donc VRAI si les 9 valeurs du tableau sont toutes diffrentes, et FAUX
sinon.
a. Ecrire la fonction TousDifferents
Maintenant, bien que ce ne soit pas indispensable (car ce code n'est
pas spcialement rpt), on choisit galement par pure commodit de
confier la gnration au hasard de la grille de 81 cases un module
ddi,RemplitGrille. (ce module, qui on passera notre tableau de 81
cases en argument, est forcment une procdure, puisqu'il a pour tche
d'en modifier les 81 valeurs).
b. Ecrire la procdure RemplitGrille
Il faut prsent vrifier que l'ensemble des lignes correspond la
condition voulue, savoir qu'il n'y existe pas de doublons. On ralise donc
une fonction, VerifLignes, qui va vrifier les neuf lignes de notre grille
une par une (en utilisant bien sr la fonction TousDiffrents, dj crite)
et renvoyer VRAI si toutes les lignes sont correctes, FAUX dans le cas
contraire.
c. Ecrire la fonction Veriflignes
On procde alors de mme avec une fonction charge de vrifir les
colonnes, VrifColonnes.
Soufiane AIT TALEB

Page 1/2

OFPPT

Techniques de programmation
structure

d. Ecrire la fonction Verifcolonnes


...et encore nouveau, avec cette fois la vrification des neuf "sousgrilles" 3x3.
e. Ecrire la fonction VerifSousGrilles
Il ne reste plus qu' crire la procdure principale, et l'affaire est dans
le sac !
f. Ecrire la procdure principale de l'application

Soufiane AIT TALEB

Page 2/2

OFPPT

Vous aimerez peut-être aussi