Apprendre à jouer au jeu de Nim à un ordinateur avec scratch publié le 14/10/2022

TraAM 2021 - 2022

Pages : 123

Déroulement du scénario

J’avais dit aux élèves en début d’année que l’on allait programmer un ordinateur pour lui faire apprendre à jouer à un jeu. En précisant que l’on allait partir d’un ordinateur qui "ne savait rien faire" (ou pas grand chose).
Étant donné les compétences demandées aux élèves au collège en terme de programmation, le jeu choisi est le jeu de Nim et dans sa forme exclusivement numérique (pas d’allumettes, de bâtons, de barres où autres objets physiques pour un traitement facile par un ordinateur et en limitant les distractions pour les élèves telle que le choix de belles allumettes, leur placement...). J’ai considéré que le choix du Tic Tac Toe aurait déjà rendu le traitement beaucoup plus difficile et hors de portée des élèves.

Un peu plus tard dans l’année, après avoir indiqué que c’était maintenant que l’on allait programmer un ordinateur pour qu’il apprenne à jouer au jeu de Nim (et à être fort), j’ai commencé par leur faire jouer eux-mêmes à ce jeu en leur demandant de garder en tête la façon dont ils font évoluer leur façon de jouer. (métacognition : comment j’apprends, domaine 2 du socle : les méthodes et outils pour apprendre)
J’ai organisé une sorte de tournoi sur la moitié d’un cours.
Les élèves ont noté leurs parties sur leur cahier.
Ils se mettaient par deux. Je leur donnais un nombre de départ, ils faisaient des parties en commençant chacun leur tour et ainsi de suite jusqu’à ce que trois minutes environ soient écoulées. On récupérait les résultats et on changeait ensuite les binômes.

Deux élèves de troisième jouant au jeu de nim en notant leurs coups sur leur cahier

Pour commencer une séance utilisant comme support le jeu de nim en mathématiques, des troisièmes s'approprient les règles en jouant des parties sur leur cahier. Ils notent leurs coups, ce qui peut leur permettre d'avoir une réflexion sur leur stratégie éventuellement.

Beaucoup d’élèves voient bien que s’ils laissent quatre à leur adversaire, ils ont gagné en testant les trois possibilités. Par contre, peu réussissent à en déduire que s’ils laissent huit, puis douze, puis seize puis... ils ont aussi gagné.
En bilan on a écouté où ils en étaient de leurs stratégies. Certains ont trouvé qu’il fallait laisser à leur adversaire un multiple de quatre pour gagner. Je leur ai dit que pour un ordinateur c’était déjà un raisonnement trop évolué et qu’il allait falloir trouver une autre façon de faire : la notion de multiple de quatre à apprendre à un ordinateur est très compliqué. Si on utilise le bloc "modulo" de scratch dans le programme, ce n’est pas l’ordinateur qui va apprendre à jouer puisqu’on lui donne la stratégie gagnante directement.

Première séance avec le logiciel scratch

J’ai fait le choix de leur donner un programme déjà fait mais avec des erreurs à corriger. (ce qui correspond à ce qui est demandé lors des épreuves du diplôme national du brevet)
Cela fait gagner du temps et permet d’avancer plus facilement car tout le monde a le même programme.
Les élèves sont par deux et jouent l’un contre l’autre.
Ils corrigent les quatre erreurs. Au bout d’un moment, ceux qui ont trouvé les erreurs passent "élève ressource" et vont aider leurs camarades à corriger leur programme.

Deux élèves de troisième jouant au jeu de nim avec un programme scratch

Lors d'une séance utilisant comme support le jeu de nim en mathématiques, des troisièmes s'approprient jouent des parties à l'aide d'un programme scratch qu'ils ont d'abord dû corriger.

Cette entrée en matière permet aux élèves de se remettre la règle du jeu en tête.
Le premier programme est donc un programme qui permet à un être humain de jouer contre un autre être humain.
Je leur demande de modifier le programme pour qu’un être humain puisse jouer contre l’ordinateur. (l’ordinateur sera le joueur 2)
Je les laisse regarder dans tous les blocs à disposition dans scratch.
J’évacue les propositions qui suppose que l’ordinateur est déjà "trop intelligent" et qui correspondent aux stratégies qu’ils ont trouvé.
Il faut bien garder en tête que l’ordinateur doit apprendre à apprendre à jouer.
Je leur dis d’utiliser le bloc vert "nombre aléatoire entre ... et ..." qui correspond à un ordinateur qui n’est pas "intelligent". C’est aussi comme cela que les élèves ont commencé à jouer. (on pourrait aussi choisir de dire que l’ordinateur soustrait toujours le même nombre au lieu qu’il joue au hasard)
Même principe, les élèves les plus avancés passent "élève ressource".
Ils testent ensuite leur programme et jouent ainsi contre l’ordinateur. Ils jouent contre un ordinateur qui ne sait pas encore vraiment jouer puisque ses coups sont basés sur le hasard : un ordinateur vraiment "débutant".
Pour la dernière étape de cette séance, ils modifient encore le programme pour que l’ordinateur joue contre lui-même. (comme ce qui est fait avec les ordinateurs qui ont appris à jouer au jeu de go par exemple)
Ils s’aperçoivent quand c’est fait que les parties sont quasiment instantanées.
Je demande aux plus avancés de choisir un nombre de départ et de voir si c’est plutôt le "joueur ordinateur 1" ou le "joueur ordinateur 2" qui gagne le plus souvent ou si les "chances de gagner" semblent être les mêmes. En entendant des conclusions un peu trop hâtives, je leur demande de faire jouer plus de parties. (certains, en ayant vu le "joueur ordinateur 1" gagner deux fois, en déduisent dans la foulée qu’il va tout le temps gagner...)
S’ensuit l’idée de créer des variables pour comptabiliser le nombre de parties gagnées par le "joueur ordinateur 1" ou par le "joueur ordinateur 2".
Je leur demande ensuite de faire qu’automatiquement, il se joue beaucoup de parties successives et d’observer le nombre de parties gagnées par l’un ou l’autre des joueurs.
Un bilan clôt la séance en rappelant les différentes étapes :

  • un être humain joue contre un être humain ;
  • un être humain joue contre un ordinateur débutant ;
  • un ordinateur débutant joue contre un ordinateur débutant ;
  • un ordinateur débutant joue un grand nombre de parties contre un ordinateur débutant.

Seconde séance avec le logiciel scratch

Elle commence par de la consolidation : reprise du premier programme donné, avec les mêmes étapes que la première séance mais en beaucoup plus vite avec toujours l’utilisation des "élèves ressource".
Dans un deuxième temps je reviens sur la stratégie que les élèves ont quand le nombre devient assez petit, à savoir ils testent les trois possibilités. Je mets à disposition un programme qui permet de faire cela. C’est un programme avec lequel on choisit un nombre de départ et qui va tester si on gagne plus de parties en enlevant 1, 2 ou 3.
Ils font des essais avec différents nombres de départ.
Les résultats ne sont pas forcément très probants. Pour un nombre de départ élevé, le choix du nombre à soustraire n’est pas toujours évident quand les "joueurs ordinateurs" jouent comme des débutants.
L’étape suivante est qu’ils stockent dans la mémoire de l’ordinateur le nombre à soustraire en fonction du nombre.
Je leur montre comment créer une liste et comment elle va être utilisée.
L’élément 1 de la liste indique combien il faut soustraire quand c’est le nombre 1 à leur tour de jouer.
L’élément 2 de la liste indique combien il faut soustraire quand c’est le nombre 2 à leur tour de jouer..
Et ainsi de suite....
Les élèves se rendent compte que la suite de nombres à soustraire obtenue est périodique. Je fais un point sur le fait que programmer un ordinateur pour qu’il détecte une régularité (ici une périodicité) est difficile.
Ils changent aussi le programme pour que le "joueur ordinateur" qui apprend utilise les informations stockées.
Ils complètent la liste progressivement en commençant par des parties où le nombre de départ est 1, puis 2, puis 3...

Cela leur montre en passant que, pour résoudre un problème, on peut d’abord le simplifier puis le rendre de plus en plus difficile jusqu’à résoudre le problème initial.

Dernière séance dans une salle classique

Lors de la séance précédente ce sont eux qui ont complété la mémoire (la liste) qui a permis à l’ordinateur de savoir jouer : puisque la façon de jouer est mémorisée, il a appris et donc maintenant, il sait jouer.
Je leur montre aussi que le fait que le joueur ordinateur 1 utilise au fur et à mesure la stratégie stockée dans la liste permet de compléter la liste de façon beaucoup plus efficace mais que si le joueur ordinateur 2 utilise lui aussi la stratégie trouvée alors c’est encore plus efficace.
Je leur montre un programme où la liste se complète automatiquement jusqu’au nombre de leur choix.
C’est le programme qui était l’objectif du scénario : un programme qui permet d’apprendre à apprendre à l’ordinateur à jouer au jeu de Nim.
Je leur montre aussi l’avantage des apprentissages d’un ordinateur par rapport à un être humain, c’est qu’il peut être copié et utilisé dans un autre programme contrairement aux êtres humains qui commencent leur apprentissage de zéro à leur naissance. Il n’existe pas encore de technique à ma connaissance pour récupérer un apprentissage acquis par un être humain et le donner à un autre être humain.
J’exporte donc cette liste dans un fichier que j’importe dans le programme où un être humain joue contre l’ordinateur en modifiant le programme pour que l’ordinateur utilise cette liste, cet apprentissage.
Je fais ensuite jouer la classe contre l’ordinateur.
Je termine en leur faisant écouter une émission de radio dans laquelle un enfant voudrait savoir grâce à quoi les smartphones sont si intelligents et où l’intervenant répond que ce sont surtout les personnes qui les programment qui sont très intelligentes.

Les 5 questions-réponses du dimanche 6 mars 2022 (MP3 de 2.3 Mo)

La conclusion du scénario est qu’ils ont ainsi vu que l’on pouvait faire apprendre des choses à un ordinateur en gardant bien en tête que c’est un être humain à la base qui permet que cela soit possible.

Réussites, remarques, obstacles et limites

Pour ne pas prendre trop de séances, le scénario est tout de même très guidé, ce qui ne l’empêche pas d’être riche en enseignements.

Un des messages que je voulais faire passer aux élèves était, que dans la vie de tous les jours, on peut tomber sur des situations où on croit que l’on a affaire à une situation équitable comme quand on lance un dé équilibré alors qu’en fait, pas du tout. En effet, dans le cas du jeu de Nim, le joueur qui connait la stratégie gagnante sait avant de commencer la partie, s’il va gagner à coup sûr ou s’il peut gagner si l’autre ne connait pas la stratégie gagnante. Parfois, il est très difficile de reconnaitre ces situations. (Domaine 3 du socle : La formation de la personne et du citoyen) En tout cas, il me sera difficile de savoir si ce scénario a modifié leur façon d’aborder la vie de tous les jours.

Pour les plus rapides, on peut leur demander de modifier les programmes pour que les nombres soustraits soient bien donnés parmi 1, 2 ou 3 quand c’est à un humain de jouer. Il faut un "message d’erreur" sinon et que la question soit reposée.

Document joint
un document Fichiers Scratch compressés (Zip de 477.7 ko)

Apprendre à jouer à un ordinateur au jeu de Nim avec Scratch - TraAM 2021/2022 - Académie de Poitiers.