DEUG MIAS 24
Types et Structures de
données
TD 8
1.Les dominos
On représente un domino par
un doublet de type int * int.
1.1.Nombre de dominos
Quel est le nombre de pièces
d'un jeu de dominos ?
Déclarer le nom nb_dom lié à cette
constante.
1.2.L'ensemble des dominos
Écrire une définition de la
fonction create_doms : unit -> (int
* int) array telle que (create_doms ()) retourne
un tableau contenant tous les dominos du jeu.
Déclarer le nom les_dominos
lié à un tel tableau.
2.La pioche
À un instant du jeu, un certain
nombre de dominos ont déjà été tirés (distribués ou piochés) les autres
restent sur la table, face cachée.
2.1.Structure de données
Pour représenter cet état,
on définit le type enregistrement suivant :
type pioche = {doms :
(int * int) array ; mutable nb : int}.
Dans cet enregistrement,
l'étiquette doms mémorisera le tableau les_dominos et l'étiquette
nb une référence sur le nombre de dominos non encore
tirés.
Le tableau d'étiquette
doms reste une permutation de l'ensemble des dominos.
L'ordre des dominos dans ce tableau est tel que les dominos non tirés sont mémorisés
dans les éléments d'indice 0 à !nb - 1 inclus, les dominos déjà tirés dans les éléments
d'indice nb à nb_doms -
1 inclus.
2.2.La pioche dans l'état
initial
Déclarer le nom la_pioche
lié à une valeur de type pioche représentant l'état du jeu lorsqu'aucun domino n'a encore
été tiré.
2.3.La pioche vide
Écrire une définition de la
fonction est_vide telle que (est_vide
p) retourne true si et seulement
si p est
une pioche où tous les dominos ont été tirés.
2.4.tirage aléatoire d'un
domino de la pioche
Écrire une définition de la
fonction pioche telle que (pioche p)
- lève l'exception Failure "pioche" si
la pioche est vide
ou
- choisit aléatoirement
un entier n compris entre 0 inclus et le nombre de dominos non tirés de la
pioche p exclu,
- décrémente le nombre
nb de domino non tirés dans la pioche p,
- échange, dans le tableau
p.doms, le domino d d'indice n et le domino d'indice nb et
- retourne le domino d
tiré aléatoirement.
2.5.Ré initialisation d'une
pioche
Écrire une définition de la
fonction melange : pioche -> unit telle que (mélange
p) modifie la pioche p pour qu'elle représente
une pioche initiale où aucun domino n'est tiré.
2.6.Utilisation de la pioche
Écrire une expression qui
retourne la liste des tirages successifs de la_pioche tant qu'elle
n'est pas vide.
Réinitialiser la_pioche.
3.Distribution des dominos
On veut initialement distribuer
aléatoirement 3 dominos à 4 joueurs.
3.1.
Écrire une définition de la
fonction distribue telle que (distribue p)
- effectue le mélange des
dominos de la pioche p (aucun domino tiré) puis
- retourne un tableau
de 4 listes de 3 dominos tirés au hasard dans la pioche p.
3.2.
Appliquer la fonction distribue à la_pioche.
Vérifier la valeur de la_pioche.