E450 - Pas de deux sur un damier
Voici un damier de dimensions 12 x 12 sur lequel des pions blancs et noirs ont été placés avec un pion blanc et un pion noir sur chacune des 12 rangées.
Votre adversaire est l'ordinateur qui est un parfait logicien et vous jouez à tour de rôle.
Vous déplacez les pions blancs et l'ordinateur les noirs, dans une seule rangée à la fois. Les pions vont sur n'importe quelle case libre de la rangée vers la gauche ou vers la droite, mais sans sauter par-dessus le pion adverse.
Le dernier qui bloque tous les pions de l'adversaire est le gagnant.
Vous jouez le premier. Quel est votre premier coup?
Solution par Patrick Gordon
Supposons tout d'abord que le jeu se joue sur une seule rangée.
Quand le pion B et le pion N sont collés (où que ce soit sur cette rangée), celui dont c'est le tour de jouer perd, car l'autre peut, de case en case, l'acculer au "mur" (case 1 ou case 12) sur cette rangée. La variable déterminante pour l'issue du jeu est donc l'écart entre les deux pions.
Si l'on représente le jeu sur une rangée par un graphe à 10 sommets, représentant chacun une des 10 valeurs a priori possibles de cet écart, et où un arc (i,j) indique que l'on peut passer de la valeur i à la valeur j (attention : ce ne sont pas les abscisses des cases mais, rappelons-le, les valeurs des écarts), la valeur 0 présente la propriété que, si l'un des joueurs part d'elle, il doit la quitter (donc augmenter l'écart) et que, si l'un des joueurs part d'une autre valeur, il peut aller à 0 (donc réduire l'écart). La valeur 0 est donc un noyau du graphe et la fonction de Grundy de celui- ci est égale à l'écart.
Si le jeu se joue sur 12 rangées dans les conditions de l'énoncé, à savoir que les joueurs doivent alternativement déplacer, qui les pions blancs qui les noirs, dans une seule rangée à la fois, le jeu est un jeu de Nim et les fonctions de Grundy s'additionnent "binairement" (on parle aussi
d'addition digitale ou de Nim-addition), à savoir :
- on écrit en binaire les écarts (donc les fonctions de Grundy) de chacune des 12 rangées cadrés à droite,
- on additionne les 1 et les 0 de chaque colonne (ceux de la position 1, de la position 2, de la position 4, de la position 8) "binairement", c’est-à-dire en prenant la valeur mod. 2 de la somme,
- si le résultat est 0, on est dans le noyau (du graphe à 12 rangées) et celui qui doit jouer perd,
- si le résultat n'est pas 0, le tableau indique ce que doit jouer le joueur suivant pour arriver à 0 et donc gagner.
Dans l'exemple qui nous intéresse, les écarts initiaux sont : 3, 7, 1, 10, 7, 1, 2, 7, 3, 3, 6, 5 d’où le tableau de la Nim-addition de 12 lignes et 4 colonnes :
3 1 1
7 1 1 1
1 1
10 1 0 1 0
7 1 1 1
1 1
2 1 0
7 1 1 1
3 1 1
3 1 1
6 1 1 0
5 1 0 1
somme 1 1 1 1
Ce tableau indique que le joueur B, qui commence, a intérêt à passer d'un écart de 10 à un écart de 5 à la rangée 4, en se déplaçant donc de 5 cases vers la gauche.
La Nim-addition passe alors de 1 1 1 1 à 0 0 0 0.