You are on page 1of 2

Emetteur : Scolarit

Date : 01/12/2015
Version : 2
Page : 1/1

DEVOIR SURVEILLE S1 2016/2017


me
Dure : 1h30 Matire : Classe : 3 Anne Ingnieur Gnie Informatique

Documents autoriss : Non Algorithmique Enseignants : A. DAHMANE, F. HAMDAOUI & W. CHLAGOU

Date : Novembre 2016 avance Nombre de pages : 2

Jeu de SuDoKu (20 points)


On dispose dune grille SuDoKu sous forme dune matrice dentiers T de taille NN partiellement
remplie par des valeurs entre 1 et 9 (N est une constante globale gale 9).T est subdivise en
9 carrs de taille 33. Un carr est lintersection entre 3 lignes et 3 colonnes de T (voir Figure 1).

Description du jeu
Le jeu consiste remplir les cases vides de T avec un entier entre 1 et 9 de sorte que lentier
n'apparat que :
une seule fois dans une ligne de T ;
une seule fois dans une colonne de T ;
une seule fois dans un carr de T.

Manipulation de T (de type MAT)


T est une matrice dclare et initialise dans le programme principal.
Les cases vides de T sont initialises la valeur 0.
MAT = Tableau [1..9] [1..9] de EntierOU BIEN Mat = Tableau[1..9, 1..9] de Entier
Pour identifier les lignes et les colonnes de T, on utilise respectivement les indices i et j.Une
case de T est identifie soit par :
- ses indices i et j (T[i, j])
- ou son ordre k dans T (0 k < 9x9) o k est ordonn de gauche droite et de haut vers le bas.
La relation entre k, i et j est :
k= (i-1) * N + (j-1) i = (k DIV N) + 1 et j= (k MOD N) + 1.
Exemples : Les cases dordrek suivants 0, 8, 9, 80 de T ont respectivement les indices (i, j) suivants :
(1, 1), (1, 9), (2, 1), (9, 9). Voir Figure 1 la page suivante.
NB : La fonction Ordre(i, j) est suppose prdfinie. Elle retourne lordre k correspondant aux
indices i et j dune case de T.

DS dalgorithmique avance INFO3 Novembre 2016 1/2


Figure 1 : Exemple dune grille SuDoKu (T)

i/j 1 2 3 4 5 6 7 8 9 i/j 1 2 7 8 9
1 5 3 0 0 7 0 4 0 0 1 K=0 K=1 K=6 K=7 K=8
Carr
2 6 0 0 1 9 5 0 0 0 2 K=9 K=10 K=15 K=16 K=17
N 3
3 0 9 8 0 0 0 7 6 0 (K=16) 3 K=18 K=24 K=25 K=26
4 8 0 0 0 6 0 0 0 3 4 K=27
5 4 0 0 8 0 3 0 0 1 5
6 7 0 0 0 2 0 0 0 6 6
Carr
7 0 6 0 0 0 0 2 8 0 7 K=60 K=61 K=62
N 9
8 0 3 0 4 1 9 0 0 5 (K=70) 8 K=63 K=69 K=70 K=71
9 1 0 0 0 8 0 0 7 9 9 K=72 K=73 K=78 K=79 K=80

Travail demand :
1) [2 pts] Ecrire la fonction nbVide(T) qui retourne le nombre de cases vides dans T.

2) [2 pts] Ecrire la fonction DansLigne(T, i, x) qui vrifie si x se trouve dans la ligne i ou pas.

NB : La fonction DansColonne(T, j, x) est suppose prdfinie.

3) [5 pts] Ecrire la fonction OrdreCarre(i, j) qui retourne lordre du carr o se trouve la case dindices i
et j.Un carr de T est identifi par lordre k de la case se trouvantau centre de ce carr.k sappelle
alors ordre du carr(voir Figure 1).
Exemples :
Les carrs 1, 2, , 9 de T sont identifis par les valeurs de k suivantes :
10, 13, 16, 37, 40, 43, 64, 67, 70 quicorrespondent aux centres dindices i et j suivants :
(2, 2), (2, 5), (2, 8), (5, 2), (5, 5), (5, 8), (8, 2), (8, 5), (8, 8).

4) [4 pts] Ecrire la fonction DansCarre(T, i, j, x) qui vrifie si x se trouve dans le carr contenant la case
T[i][j] (ou T[i,j]).

5) [4 pts] Ecrire la procdure RemplirCase(T, i, j) qui permet de remplir la case videT[i, j] par une
valeurentre 1 et 9 en faisant tous les contrles ncessaires.La grille T est suppose bien videment
remplie partiellement par des chiffres entre 1 9.

6) [3 pts] Proposer une procdure RemplirGrille(T) permettant de complter le remplissage des cases
vides de la grille SuDoKu T par des chiffres entre 1 et 9.

Bon travail !

DS dalgorithmique avance INFO3 Novembre 2016 2/2

You might also like