From 7e5e532094908dd3b5768bf830ca8f7087b9f932 Mon Sep 17 00:00:00 2001
From: "David A. Madore" <david+git@madore.org>
Date: Thu, 18 Jun 2026 12:42:40 +0200
Subject: Third exercise, on a restricted variant of nim.

---
 controle-20260622.tex | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 107 insertions(+)

(limited to 'controle-20260622.tex')

diff --git a/controle-20260622.tex b/controle-20260622.tex
index e1f5345..266e314 100644
--- a/controle-20260622.tex
+++ b/controle-20260622.tex
@@ -551,6 +551,113 @@ parité considéré est déterminé.
   mais dont on ignore s'il est dans $\mathbf{P}$.\par}
 
 
+%
+%
+%
+
+\exercise
+
+Dans cet exercice, on considère une variante du jeu de nim (fini) dans
+laquelle on limite le nombre de bâtonnets qui peuvent être retirés en
+un seul coup.
+
+\medskip
+
+\textbf{(1)} Soit $k\geq 1$ un entier naturel, et soit
+$n\in\mathbb{N}$ un entier naturel.  On considère le jeu combinatoire
+dans lequel il y a une seule rangée de bâtonnets, initialement avec
+$n$ bâtonnets, et où chaque joueur, quand vient son tour, retire un
+nombre quelconque entre $1$ et $k$ bâtonnets.  (Plus exactement, les
+positions du jeu sont les entiers $i$ avec $0\leq i\leq n$, et on peut
+passer de la position $i$ à la position $j$ lorsque $1\leq i-j\leq
+k$.)  Comme d'habitude, le joueur qui ne peut pas jouer perd.
+Calculer la valeur de Grundy $\mathrm{g}_k(n)$ de ce jeu.
+(\textit{Indication :} On pourra commencer par calculer à la main les
+valeurs $\mathrm{g}_k(i)$ pour $0\leq i\leq k$, puis
+$\mathrm{g}_k(k+1)$ et plus si besoin est, et s'en servir pour
+conjecturer une formule générale que l'on démontrera.)
+
+\begin{corrige}
+La définition de la fonction de Grundy donne :
+\[
+\mathrm{g}_k(n) = \mex\{\mathrm{g}_k(i) : \max(0,n-k) \leq i \leq n-1\}
+\]
+où comme d'habitude $\mex S$ désigne le plus petit entier naturel qui
+n'est pas dans $S$.  Tant que $n\leq k$, on a donc juste
+$\mathrm{g}_k(n) = n$ comme au jeu de nim ; en revanche,
+$\mathrm{g}_k(k+1) = \mex\{1,2,\ldots,k\} = 0$ ; on a ensuite
+$\mathrm{g}_k(k+2) = \mex\{0,2,\ldots,k\} = 1$, et ainsi de suite.  On
+voit donc qu'il y a périodicité de période $k+1$.  Par récurrence
+sur $n$ on montre donc
+\[
+\mathrm{g}_k(n) = n \% (k+1)
+\]
+où $n \% (k+1)$ désigne le reste (compris entre $0$ et $k$ inclus) de
+la division euclidienne de $n$ par $k+1$.  On a déjà vu que c'était le
+cas pour $0\leq n\leq k$ ; et si $n>k$, on a $\mathrm{g}_k(n) =
+\mex\{\mathrm{g}_k(i) : n-k \leq i \leq n-1\}$, où (par hypothèse de
+récurrence) l'ensemble dont on prend le $\mex$ contient tous les
+restes des divisions euclidiennes modulo $k+1$ à l'exception de celle
+de $n$, qui est donc la valeur de $\mathrm{g}_k(n)$, ce qui conclut la
+récurrence.
+\end{corrige}
+
+\medskip
+
+\textbf{(2)} On considère maintenant le jeu combinatoire suivant : une
+position consiste en un certain nombre de bâtonnets $n_1,\ldots,n_r$
+arrangés en lignes (où $n_k$ désigne le nombre de bâtonnets sur la
+ligne numérotée $k$) ; chaque joueur, quand vient son tour, retire des
+bâtonnets selon les règles suivantes :
+\begin{itemize}
+\item comme au jeu de nim usuel, les bâtonnets retirés sont sur une et
+  une seule ligne (i.e., un des $n_k$ est remplacé par un $n'_k$ avec
+  $n'_k < n_k$), mais en plus
+\item le nombre de bâtonnets retirés ne peut pas excéder le numéro de
+  la ligne (i.e., $1 \leq n_k - n'_k \leq k$ : on peut retirer au plus
+  $1$ bâtonnet de la première ligne, ou au plus $2$ de la deuxième,
+  etc.).
+\end{itemize}
+En exprimant ce jeu en fonction des jeux considérés à la question (1),
+exprimer la valeur de Grundy de la position $(n_1,\ldots,n_r)$ en
+fonction des $\mathrm{g}_k(i)$.
+
+\begin{corrige}
+Comme les différentes lignes n'interagissent pas du tout, le jeu qu'on
+a décrit est la somme disjonctive du jeu décrit à la question (1) pour
+les différents $k$ qui numérotent les lignes.  D'après le théorème vu
+en cours sur le calcul de la fonction de Grundy d'une somme
+disjonctive, la valeur de Grundy recherchée est la somme de nim (=XOR)
+$\bigoplus_{k=1}^r \mathrm{g}_k(n_k) = \bigoplus_{k=1}^r (n \%
+(k+1))$.
+\end{corrige}
+
+\medskip
+
+\textbf{(3)} Exemple : calculer la valeur de Grundy de la position
+$(1,3,5,7)$ (soit $1$ bâtonnet sur la ligne $1$, $3$ sur la ligne $2$,
+etc.) pour le jeu décrit en (2).  Quel coup feriez-vous si vous deviez
+jouer en premier à partir de cette position ?
+
+\begin{corrige}
+On trouve :
+\begin{itemize}
+\item $n_1 \% (1+1) = 1 \% 2 = 1$,
+\item $n_2 \% (2+1) = 3 \% 3 = 0$,
+\item $n_3 \% (3+1) = 5 \% 4 = 1$,
+\item $n_4 \% (4+1) = 7 \% 5 = 2$.
+\end{itemize}
+Le XOR de tous ces nombres est $2$ : comme cette valeur de Grundy est
+non nulle, le premier joueur a une stratégie gagnante.  Pour trouver
+un coup gagnant, on cherche à trouver un $k$ et un $n'_k$ tel que le
+remplacement de $n_k$ par $n'_k$ annule la valeur de Grundy.  Le plus
+évident est de remplacer $n_4 = 7$ par $n'_4 = 5$ (i.e., retirer
+$2$ bâtonnets de la ligne $4$) ; mais on peut aussi remplacer $n_2 =
+3$ par $n'_2 = 2$ (i.e., retirer $1$ bâtonnet de la ligne $2$) ou bien
+remplacer $n_3 = 5$ par $n'_3 = 3$ (i.e., retirer $2$ bâtonnets de la
+ligne $3$).
+\end{corrige}
+
 
 %
 %
-- 
cgit v1.2.3

