Les nouvelles technologies pour l’enseignement des mathématiques
Intégration des TICE dans l’enseignement des mathématiques

MathémaTICE, première revue en ligne destinée à promouvoir les TICE à travers l’enseignement des mathématiques.

La course à n contre le chat.
Article mis en ligne le 11 février 2016
dernière modification le 4 mars 2016

par Benjamin Clerc

Participant au cercle d’étude GRALC (groupe de réflexion collège, lycée, lycée professionnel) de l’Académie de Montpellier, j’ai été amené, lors de notre première réunion de l’année, à participer à un atelier créé pour réfléchir au Thème E du nouveau programme de mathématiques du cycle 4 (5ème, 4ème et 3ème), qui entre en vigueur à la rentrée 2016 :

Thème E – ALGORITHMIQUE ET PROGRAMMATION
Au cycle 4, les élèves s’initient à la programmation, en développant dans une démarche de projet quelques programmes simples, sans viser une connaissance experte et exhaustive d’un langage ou d’un logiciel particulier. En créant un programme, ils développent des méthodes de programmation, revisitent les notions de variables et de fonctions sous une forme différente, et s’entraînent au raisonnement.

Attendus de fin de cycle
Écrire, mettre au point et exécuter un programme simple
Connaissances et compétences associées Exemples de situations, d’activités et de ressources pour l’élève
Décomposer un problème en sous-problèmes afin de structurer un programme ; reconnaître des schémas. Écrire, mettre au point (tester, corriger) et exécuter un programme en réponse à un problème donné. Écrire un programme dans lequel des actions sont déclenchées par des événements extérieurs. Programmer des scripts se déroulant en parallèle.
  • Notions d ’algorithme et de programme.
  • Notion de variable informatique.
  • Déclenchement d’une action par un événement, séquences d’instructions, boucles, instructions conditionnelles.
  • Notion de message échangé entre objets.
Jeux dans un labyrinthe, jeu de Pong, bataille navale, jeu de nim, tic tac toe.
Réalisation de figure à l’aide d’un logiciel de programmation pour consolider les notions de longueur et d’angle.
Initiation au chiffrement (Morse, chiffre de César, code ASCII ...)
Construction de tables de conjugaison, de pluriels, jeu du cadavre exquis ...
Calculs simples de calendrier
Calculs de répertoire (recherche, recherche inversée, etc.).
Calculs de fréquences d’apparition de chaque lettre dans un texte pour distinguer sa langue d’origine : français, anglais, italien, etc.
Repères de progressivité :
En 5 ème , les élèves s’initient à la programmation événementielle. Progressivement, ils développent de nouvelles compétences, en programmant des actions en parallèle, en utilisant la notion de variable informatique, en découvrant les boucles et les instructions conditionnelles qui complètent les structures de contrôle liées aux événements. En 3 ème, ils abordent la gestion des objets, en leur faisant échanger des messages.

Référence : Projet de programme pour le cycle 4, pages 103-104.

Parmi les « Exemples de situations, d’activités et de ressources pour l’élève », il y en a une qui retient plus particulièrement mon attention car je sais qu’un article récent est paru dans MathémaTICE à ce sujet : Raconte-moi une NIMstoire de Lisa Rougetet. À la lecture de cet article je m’arrête sur le paragraphe « Les ancêtres du jeu de Nim » et plus particulièrement sur ceci :

Problème arithmétique XIX
proposé par Claude-Gaspard Bachet (https://fr.wikipedia.org/wiki/Claude-
Gaspard_Bachet_de_Méziriac
) dans son ouvrage de 1612, Problemes plaisans et delectables, qui se font par les nombres.

Je décide donc de programmer ce jeu dans Scratch, logiciel fortement conseillé pour la mise en œuvre de ce nouveau programme. Le jeu me semblant assez simple à programmer, je décide de ne pas me lancer dans une recherche parmi les 11 449 247 projets partagés sur le site de Scratch (chiffre en date du 11/11/2015) pour y trouver une éventuelle inspiration (voire le jeu en lui-même) mais je me lance directement dans sa programmation.
Pour respecter l’esprit du texte de Bachet j’opte pour un jeu :
 à deux joueurs : l’ordinateur (le chat) et l’utilisateur du programme ;
 l’utilisateur du programme décide si c’est lui qui commence à jouer ou si c’est le chat (l’ordinateur) ;
 le nombre à atteindre, n, est tiré aléatoirement entre 21 et 100 (J’ai mis comme limite inférieure 21 car j’avais un souvenir de la course à 21 qui est une version de ce jeu, j’aurais pu choisir 20 en référence au Qui dira 20 ? de Brousseau) qui est une autre version de ce jeu ;
 les nombres à ajouter seront compris entre 1 et un nombre, k, tiré aléatoirement entre l’arrondi de n/10 et 10 (Pour que le nombre de coups à jouer ne soit pas trop grand) ;
 le jeu est programmé pour que le chat (l’ordinateur) gagne à tous les coups si l’utilisateur commet la moindre erreur ;
 l’utilisateur peut gagner à tous les coups si il joue bien, c’est-à-dire si il choisit à bon escient de débuter ou pas le jeu, et ensuite si il joue de sorte qu’il occupe à chaque tour LA position préférentielle (je ne détaillerais pas ici la stratégie gagnante, elle est décrite abondamment dans la littérature sur ce sujet).
Je ne suis pas professeur de collège mais en lycée, je ne peux donc pas tester la mise en œuvre de cet algorithme moi-même en situation, cela ne m’a pas empêché de l’utiliser en classe de seconde, dans le cadre de l’Accompagnement Personnalisé.

La séance en classe

  1. Le contexte :
    Les élèves m’ont déjà eu en cours de mathématiques ce jour là de 8h à 9h (je rattrapais une heure de cours) puis de 10h à 11h. De 11h à 12h, je les ai à nouveau mais en Accompagnement Personnalisé, en classe entière. Habituellement, pendant cette heure là, je travaille avec eux sur l’orientation (je suis leur Professeur Principal), sur de l’aide à la méthodologie ou sur les mathématiques, sous forme de soutien ou plus souvent de « faire des mathématiques autrement ». Dans ce cadre là je leur ai donc proposé de jouer à la course à n. Ils ne sont donc pas surpris de ce genre d’activité.
  2. Introduction :
    Je lance le jeu en vidéo-projection, la scène de Scratch étant mise en plein écran, ce qui dissimule le script. Je joue deux fois de suite sans chercher à gagner, une première fois en débutant le jeu, une seconde en laissant le chat débuter le jeu, le chat étant programmé pour remporter la partie si je ne joue pas ce qu’il faut, je perds donc ces deux parties. Je joue ensuite une troisième partie en faisant ce qu’il faut pour la gagner.
  3. Les élèves entrent en jeu :
    Ayant 35 élèves en classe, je leur dis à tous de jouer « à la main » contre leur voisin(e), en inscrivant à tour de rôle sur une feuille commune le nombre joué et la somme obtenue, l’élève isolé prenant ma place et jouant contre le chat. Les élèves ont donc à se mettre d’accord sur qui commence, à tour de rôle ou par tirage au sort (Chifoumi ou Pile ou Face sont autorisés ...), puis essaient de remporter la partie. Cette phase dure une quinzaine de minutes, évidemment, à chaque fois, il y a un vainqueur pour chaque partie disputée. Mais l’élève au tableau ne gagne pas une seule fois contre le chat ! Des bras commencent alors à se lever pour aller remplacer l’élève à l’ordinateur afin de battre le chat, trois élèves passent ainsi successivement au tableau pendant que les autres les observent et constatent qu’ils ne gagnent pas non plus ... Plus aucun bras ne se lève pendant une dizaine de minutes, l’élève à l’ordinateur (le dernier des trois qui croyaient arriver à battre le chat) n’arrive toujours pas à gagner, les autres continuent à s’affronter ... Une dizaine de minutes plus tard, un élève lève le bras et me dit : « je sais comment faire pour battre le chat », il prend donc la place à l’ordinateur et effectivement remporte trois parties d’affilée. Je lui demande alors de nous expliquer comment il s’y prend pour gagner, et celui-ci de répondre : « Je ne sais pas comment l’expliquer mais je sais comment faire ... ». D’autres bras se lèvent, les élèves défilent à l’ordinateur et certains arrivent à gagner, d’autres non.
  4. Conclusion :
    Il existe manifestement une « tactique » qui permet de vaincre le chat, mais il semble difficile de l’expliquer, les élèves s’en vont donc avec un Devoir Maison à rendre pour la prochaine séance d’AP, dans 10 jours :
    « Donner la méthode qui permet à coup sûr de battre le chat au jeu mis en fichier joint. »
    (Le jeu est mis en fichier attaché dans le cahier de textes numérique de la classe, en version Scratch2, les élèves sont mis au courant que leur version de Scratch présente dans leur ordinateur (J’enseigne en région LR, ils ont tous eu un ordinateur à la rentrée, dans lequel Scratch1.4 est pré-installé) doit être mise à jour pour pouvoir utiliser ce fichier). Suite à l’écriture de cet article j’ai rajouté comme consigne « Si vous n’avez pas réussi à utiliser le fichier joint, vous pouvez jouer en ligne en suivant le lien dans le cahier de textes. » avec le lien suivant : https://scratch.mit.edu/projects/87397901/.
    Cette version en ligne a été jouée en classe une fois de plus, suite à sa mise en ligne dans le cahier de textes. Le tirage aléatoire a donné une partie qui, pour être gagnée, devait être commencée par l’ordinateur, ce que plusieurs élèves ont indiqué et ce qui fut fait, les élèves ont été plusieurs à indiquer alors quels devaient être les nombres joués à chaque tour pour gagner, il y a plusieurs élèves qui manifestent toujours leur incompréhension ... La remise du DM, prévue le lendemain, a été repoussée de 4 jours pour des contraintes d’emploi du temps (Ils auront donc eu deux semaines pour y travailler).

Les productions des élèves

Les élèves ont accès au code du jeu puisqu’ils avaient le fichier mis à disposition sous différentes formes, mais la complexité du code ne leur a pas permis d’en déduire la procédure à mettre en place pour gagner le jeu. Ceux qui ont réussi à expliquer cette procédure ont souvent utilisé la division euclidienne dont ils avaient souvenir de leur cours de mathématiques de 3ème (je l’ai vérifié lors d’un petit sondage en classe).
15 élèves ont utilisé la division euclidienne explicitement dans leur raisonnement, parfois incomplet (dans 7 copies), sinon prenant en compte tous les paramètres, comme par exemple cette rédaction d’élève :

Simple, efficace, concis.
Une autre rédaction d’élève :

Les copies d’élèves qui utilisent la division euclidienne sans aboutir à une réponse complète sont donc au nombre de 7, soit elles ne prennent pas en compte la différence entre un reste nul et un reste non nul, soit elles traitent uniquement d’un exemple, mais toutes montrent une stratégie partiellement gagnante.
Parmi les copies qui n’utilisent pas explicitement la division euclidienne, il y en a qui donnent une réponse complète, par exemple :

Une proposition partiellement gagnante mais originale :

Une autre, un peu confuse mais la stratégie est gagnante :

Vous pouvez affronter le chat ci-dessous :

Le jeu en ligne sur le site de Scratch.
Le même en version un peu plus aboutie mais peut-être moins « lisible » par les élèves.

Les fichiers peuvent être téléchargés ci-dessous, il vous faudra les désarchiver et les ouvrir dans Scratch2 pour les faire fonctionner, sur votre ordinateur, si vous avez installé Scratch ou si vous utilisez l’éditeur en ligne :

La couse à n, version 1
La couse à n, version 2

Mise en œuvre au collège dans le cadre de la réforme

Il est bien entendu hors de question d’attendre d’un élève de collège la programmation du jeu dans la version que je vous ai proposée. On peut commencer par la programmation de la course à 21, n n’est donc plus une variable et est fixé à 21, il en va de même de k qui est fixé à 3. On peut, dans un premier temps faire programmer le jeu sans intelligence artificielle pour faire gagner le chat à coup sûr si son adversaire commet une erreur, on peut tout de même en mettre un petit peu en faisant bien jouer le chat si il est en position de gagner près de 21.
Le jeu en ligne sur le site de Scratch

Dans Snap, un fork de Scratch en html5 (qui fonctionne donc sur toutes les tablettes et tous les smartphones, ce qui n’est pas le cas de Scratch), voici ce que cela donne :
Scripts



Blocks



Pour tester le fichier en ligne, télécharger le fichier suivant (faire un clic droit sur l’image et enregistrer sous sinon il va s’ouvrir dans votre navigateur) :

Course à 21. Fichier xml à ouvrir dans Snap.

et ouvrez-le depuis cette page : http://snap.berkeley.edu/snapsource/snap.html# (en haut à gauche, cliquer sur le premier bouton et choisissez « importer », sélectionner alors dans votre disque dur le fichier ci-dessus téléchargé, les blocs jeu_du_chat, jeu_du_joueur et test_gain_joueur sont accessibles depuis le menu variables).
Il est à noter que vous pouvez convertir vos fichiers Scratch et les ouvrir dans la page ci-dessus depuis la page suivante : http://djdolphin.github.io/Snapin8r2/
Un manuel est disponible en ligne pour prendre en main Snap : https://snap.berkeley.edu/SnapManual.pdf
Enfin, il est possible de convertir votre fichier créé dans Snap en un fichier exécutable à partir de ce site : http://snapp.citilab.eu/
Snap est un logiciel libre, il peut être installé sur n’importe quel ordinateur ou tablette depuis ce site : https://github.com/jmoenig/Snap--Build-Your-Own-Blocks (en cliquant sur Download Zip à droite). Il est traduit dans de nombreuses langues dont le français.