Dans ce jeu, chaque joueur choisit une combinaison de NP pions choisis parmi NC couleurs.
Une même couleur peut se répéter dans la version la plus difficile. Chaque
joueur doit déterminer la combinaison de l'autre joueur en proposant une combinaison
à laquelle l'adversaire répond en fournissant le nombre de noirs (pions bien
placés: même couleur et même position) et le nombre de blancs (pions de bonne
couleur mais mal placées).
Type Tabl = tableaui i=1,..,20 de entier
fonction TirageAvecRepet(NP,NC)
paramètre: NP, NC: entier
à valeur Tabl
Tabl: T
entier: i
pour i de 1 à NP faire
Ti ß 1+RANDOM(NC)
fpour
résultat(T)
fonction TirageSansRepet(NP,NC)
paramètre: NP, NC: entier
à valeur Tabl
Tabl: T, Coul
entier: i
pour i de 1 à NC faire
Couli ß i
fpour
pour i de 1 à NP faire
c ß 1+RANDOM(NC-i+1)
Ti ß Coulc
Coulc ß CoulNC-i+1
fpour
résultat(T)
fonction Noirs(T,X,NP)
paramètres: T, X: Tabl
NP: entier
à valeur: entier
entier: i, N
N ß 0
pour i de 1 à NP faire
si Ti = Xi alors N ß N+1
fsi
fpour
résultat(N)
fonction Blancs(T,X,NP,NC)
paramètres: T, X: Tabl
NP,NC: entier
à valeur: entier
entier: i, N, c
XTmp, Tmp: Tabl
pour i de 1 à NC faire
Tmpi ß 0
XTmpi ß 0
fpour
pour i de 1 à NP faire
c ß Ti
Tmpc ß Tmpc+1
fpour
pour i de 1 à NP faire
c ß Xi
XTmpc ß XTmpc+1
fpour
N ß 0
pour i de 1 à NC faire
si Tmpi < XTmpi alors N ß N+ Tmpi
sinon N ß N+ XTmpi
fsi
fpour
N ß N-Noirs(T,X,NP)
résultat(N)
entier: NP, NC, NE
Tabl: X, T
NP ß 6
NC ß 7
X ß TirageAvecRepet(NP,NC)
N ß 0
NE ß 0
tant que NOT ((N=NP) ou (NE=2*NP)) faire
DemandeCombi(T)
NE ß NE+1
N ß Noirs(T,X,NP)
écrire N," noir(s) et ", Blancs(T,X,NP,NC), "blanc(s)"
ftant
si N=NP alors écrire "Bravo! Vous avez trouvé en", NE, " essai(s)"
sinon écrire "Il fallait trouver:"
pour i de 1 à NP faire
écrire Xi
fpour
fsi
Vous pouvez charger une version Delphi du mastermind en cliquant
ici