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) ou

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)

 3.2.

Appliquer la fonction distribue à la_pioche.
Vérifier la valeur de la_pioche.