E449 – Nim au casino [*** à la main]
Une partie de NIM au casino se déroule de la façon suivante :
- Le croupier lance un dé sur le tapis qui affiche le numéro d (1 ≤ d ≤ 6) puis une bille sur le plateau de la roulette qui donne le numéro r (0 ≤ r ≤ 36). Un jeton est alors placé sur la case n° r de la table de jeu. La partie se joue alors entre Zig et Puce.
- Zig puis Puce, à tour de rôle, laissent inchangée la face visible du dé ou bien font apparaître une face qui a une unité d’écart (*). Le choix de la face x du dé étant fait, le joueur fait passer le jeton de la case n° k de la table de jeu à la case n° (k – x).Si k < x, le joueur est empêché de jouer et il perd la partie.
Q₁ Quelles sont les valeurs de r (numéro annoncé à la roulette par le croupier avant le début de la partie) pour lesquelles Puce est certain de gagner quel que soit le résultat d du lancer du dé ?
Q₂ Pour quelle(s) valeur(s) de d, Puce a-t-il plus d’une chance sur deux de gagner la partie ? Q₃ Calculer la probabilité de gain de Zig avant le début de la partie.
(*) Par exemple si la face 3 a été laissée par l’un des deux joueurs, l’autre joueur peut garder cette face ou faire apparaître ou bien la face 2 ou bien la face 4. Si c’est la face 6, ce joueur peut la garder ou faire apparaître la face 5. Si c’est la face 1, ce joueur peut la garder ou faire apparaître la face 2.
Solution proposée par Bernard Vignes
On désigne par d le numéro affiché par le dé et par r le numéro de la case où se loge la bille sur le plateau de la roulette.
Soit x(r,d) la variable discrète qui prend la valeur 1 si Zig a une stratégie gagnante pour le couple (r,d) et la valeur 0 si Puce est gagnant pour ce même couple.
A l’évidence si r = 0, x(0,d) = 0 quel que soit d≥1. Zig est inévitablement perdant car il ne peut pas jouer.
Si r = 1, on vérifie aisément que x(1,1) = 1 et x(2,1) = 1. Le numéro du dé retenu par Zig est le numéro 1 du lancer du dé ou le numéro 2 réduit d’une unité. Zig met alors le jeton dans la case 0. A l’inverse x(d,1)=0 si d >2.
Si r = 2, on a selon le même raisonnement que précédemment : x(3,2) = 1, le numéro 3 du lancer du dé est ramené à 2 par Zig puis x(2,2) = 1 et x(1,2) avec le numéro 1 du lancer du dé porté à 2 par Zig. Al’inverse x(d,1)= 0 pour d >3.
etc...
Pour les valeurs successives de r, on sait construire le tableau des x(r,d) à l’aide de l’algorithme suivant : - Si r < d – 1 alors x(r, d) = 0,
- Si r = d – 1 ou r = d ou r = d + 1 alors x(r, d) = 1,
- Si r > d + 1 alors si x(r – d, d) = 1 et x(r – d –1, d + 1) = 1 et x(r – d + 1, d – 1) = 1 alors x(r, d) = 0 sinon x(r, d) = 1.
L’écriture d’un programme informatique fondé sur cet algorithme est immédiate (voir annexe) et permet d’obtenir le tableau ci-après des x(r,d) pour 0 ≤ r ≤36 et 1 ≤ d ≤ 6.
Q₁ Les valeurs de r pour lesquelles Puce est certain de gagner sont r = 0 et r = 26 (cf colonnes en vert du tableau ci-dessus dans lesquelles les x(r,d) sont tous nuls)
Q₂ Pour d = 6, Puce a une probabilité de gagner la partie égale à (37 – 18)/37 = 19/37 .Voir ligne d = 6 repérée en bleu :
Q₃ La probabilité de gain de Zig est obtenue en dénombrant toutes les cases qui contiennent 1 soit 145/(6*37) = 145/222 = 0,653...
ANNEXE
Sub macro20141006() Dim x(36, 6)
r0 = 36: d0 = 6 For r = 1 To r0
x(r, 0) = 1: x(r, d0 + 1) = 1 For d = 1 To d0
If r < d - 1 Then x(r, d) = 0
If r = d - 1 Or r = d Or r = d + 1 Then x(r, d) = 1
If r > d + 1 Then If x(r - d, d) = 1 And x(r - d - 1, d + 1) = 1 And x(r - d + 1, d - 1) = 1 Then x(r, d) = 0 Else x(r, d) = 1 Next d
Next r
For r = 1 To r0 kk = kk + 1
Range("A" & kk).Value = x(r, 1) Range("B" & kk).Value = x(r, 2) Range("C" & kk).Value = x(r, 3) Range("D" & kk).Value = x(r, 4) Range("E" & kk).Value = x(r, 5) Range("F" & kk).Value = x(r, 6) Next r
End Sub