2/4
Structures de données septembre 2000
2Types abstraits algébriques (1.5pts)
Dans un jeu les pièces sont placées sur des cases numérotées 1, 2, 3, etc. Les joueurs peuvent
placer des pièces sur des cases ou les en enlever. La spécification qui suit définit l’évolution de
l’état du jeu (représenté par la sorte jeu) en fonction des mouvements des pièces (de la sorte pie-
ce).
SPECIFICATION Jeu
UTILISE Entier, Booléen;
SORTES jeu, pièce;
OPERATIONS
-- constructeurs
vide : -> jeu
placer : pièce, entier, jeu -> jeu
enlever : pièce, jeu -> jeu
-- sélecteur
position : pièce, jeu -> entier
nombre-pieces : entier, jeu -> entier
AXIOMES
POUR TOUT P, Q, X, J
1. position(P, vide) == 0;
2. position(P, placer(Q, X, J)) ==
si P == Q alors X
sinon position(P, J);
3. position(P, enlever(Q, J)) ==
si P == Q alors 0
sinon position(P, J);
4. nombre-pieces(X, vide) == 0;
5. nombre-pieces(X, placer(P, Y, J) ==
si X == Y alors 1 + nombre-pieces(X, J)
sinon nombre-pieces(X, J)
6. nombre-pieces(X, enlever(P, J) ==
si position(P, J) == X alors nombre-pieces(X, J) - 1
sinon nombre-pieces(X, J)
Appliquez les axiomes (et uniquement les axiomes!) pour simplifier au maximum les expres-
sions ci-dessous, écrivez les principales étapes de la simplification.
a) position(a, vide).
b) nombre-pieces(3, vide).
c) position(a, placer(a, 14, placer(b, 33, placer(c, 22, vide)))).
d) position(b, placer(a, 4, placer(b, 4, placer(a, 6, vide)))).
e) nombre-pieces(4, placer(a, 4, placer(b, 6, placer(c, 4, vide)))
f) position(b, enlever(c, enlever(d, placer(b, 6, enlever(b, vide))))).
g) nombre-pieces(21, placer(b, 21, enlever(a, placer(c, 17, placer(a, 21, placer(d, 21, vide))))))
h) nombre-pieces(6, placer(a, 6, placer(a, 6, placer(a, 6, vide))))