A bientôt !
-
Sujet Rallye 974 Maths 2024













Les vidéos sont indisponibles. Elles servent uniquement à informer et non à résoudre.



Les vidéos sont indisponibles. Elles servent uniquement à informer et non à résoudre.



-
Sujet Rallye 974 Maths 2023












La vidéo est indisponible mais l’information principale est : La diagonale des dingues sépare-t-elle vraiment l’île en deux ?

-

Modélisation de Sowing impartial en Python
Le jeu Sowing impartial, créé par John Conway à la fin du XXe siècle, a servi de fil conducteur en NSI (première et terminale) durant l’année scolaire 2025-2026. De nombreux concepts du programme de cette spécialité sont en effet illustrés par ce jeu. Voici la règle du jeu :
Chaque joueur, à son tour,
- choisit une case non vide,
- met dans sa main toutes les graines que contenait la case,
- choisit un sens de semis (vers la gauche ou vers la droite),
- sème, une par une, dans le sens choisi, toutes les graines.
Si le semis se termine en dehors du plateau ou dans une case jusque là vide, on a perdu. Le premier qui ne peut plus jouer ainsi, perd le jeu.
Algorithmique
Invariant
En jouant sur un plateau de 8 cases, tel qu’initialement il y a 2 graines par cases, alors la proposition le nombre total de graines est 16 est un invariant. Il sert notamment à détecter la triche, mais aussi, lors de la programmation du jeu en Python, d’éventuels bugs.
Variant
L’existence d’un variant simple et au programme de NSI permettant de prouver la terminaison de ce jeu, est en 2025 un problème ouvert.
Structures de données
Le jeu Sowing impartial est partiellement simulable en SQL, avec deux attributs, le premier étant l’indice de la case (clé primaire), le second étant le nombre de graines contenues dans la case. De même, en Python, il est logique de modéliser un plateau de Sowing par un tableau d’entiers, par exemple ce plateau :

est assez logiquement modélisé par le tableau
[1,2,2,0,2,2,2,1]. Cependant, pour pouvoir backtracker (annuler une hypothèse), il peut être nécessaire d’utiliser une structure linéaire comme les tableaux (typelisten Python) mais, contrairement à iceux, immuable. La modélisation de Sowing en Python peut donc motiver l’introduction des tuples, qui, de plus, prennent moins de place en mémoire. Le fait que les tuples sont immuables permet, également, de s’en servir comme clés dans un dictionnaire, qui modélisera le graphe du jeu.Programmation du jeu en Python
Pour simuler le jeu, on a besoin de pouvoir choisir au hasard l’indice d’une case parmi les cases jouables. Aussi le programme commence-t-il par :
from random import choiceet, en Terminale, pour dessiner le graphe du jeu, on fera
from graphviz import DigraphRègle du jeu
Une case ne peut être jouée que si elle existe (indice à l’intérieur du plateau), elle est non vide, et que la case où tombe la dernière graine est dans le plateau et n’est pas vide :
def jouable(p,i,s): n = len(p) if i<0: return False if i>=n: return False if p[i]==0: return False if i+s*p[i]<0: return False if i+s*p[i]>=n: return False if p[i+s*p[i]]==0: return False return TrueLa fonction booléenne
est_jouableci-dessus s’applique à un plateaup(un tuple), un indicei(un entier) et un senss(un entier égal à 1 ou -1), et dit si la case d’indiceidans le plateaupest jouable en semant dans le senss. L’ordre dans lequel s’effectuent les tests garantit que chaque expression a un sens au moment où on l’évalue (sinon on aurait quitté la fonction avec unreturn).La fonction
est_jouablesert à définir une fonctionjouables, qui, à un plateaup, associe la liste des indices des cases jouables sur ce plateau :def jouables(p): return [i for i in range(len(p)) if jouable(p,i,-1) or jouable(p,i,1)]Le jeu est fini lorsque plus aucun indice n’est jouable, donc on cherche à obtenir une telle situation et le plateau est alors considéré comme gagnant :
def gagnant(p): return jouables(p)==[]Semis
Pour effectuer un semis, on a besoin d’un objet mutable, alors on convertit le plateau
pen une listeq, que l’on modifie en semant les graines, et que l’on convertit en tuple à la fin du semis. Les graines sont semées une par une :def jouer(p,i,s): assert jouable(p,i,s), "tricheur !" q = list(p) graines = q[i] q[i] = 0 while graines: i += s graines -= 1 q[i] += 1 return tuple(q)L’expression
graines(le nombre de graines restant à semer) est un variant (grâce àgraines -= 1) qui prouve qu’un tour de jeu dure un temps fini (ce n’est pas nécessairement le cas au katro). C’est pour une partie complète du jeu, qu’on ne dispose pas de variant.Liste d’adjacence
Pour la construction du graphe du jeu mais aussi pour l’affichage des étapes, on aura besoin d’une fonction qui, à un plateau
p, associe ses enfants (les plateauxqtels qu’il y a un arc depversqdans le graphe orienté du jeu) :def enfants(p): tab = [jouer(p,i,-1) for i in range(len(p)) if jouable(p,i,-1)] tab += [jouer(p,i,1) for i in range(len(p)) if jouable(p,i,1)] return tabCette fois-ci, on renvoie un objet mutable (un tableau) ce qui permet d’utiliser la méthode
appendpour construire ledit tableau.Il sera intéressant, pour afficher le déroulé du jeu, de pouvoir calculer l’indice de la case jouée, et le sens du semis, à partir de la connaissance de l’ancien plateau
pet du nouveau plateauq:def indice(p,q): return [i for i in range(len(p)) if p[i]>q[i]][0] def sens(p,q): i = indice(p,q) if i>0 and p[i-1]<q[i-1]: return -1 if i<len(p)-1 and p[i+1]<q[i+1]: return 1La case jouée est la seule qui soit devenue vide (c’est-à-dire dont l’ancienne valeur soit supérieure à la nouvelle valeur qui est zéro), et le sens est celui selon lequel la case voisine a plus de graines qu’avant.
Distance entre plateaux
Très peu d’élèves de Première se souviennent de la formule donnant la distance euclidienne entre deux points du plan repéré. De plus, des problèmes d’approximation se posent avec les flottants. Aussi a-t-on choisi ici, la distance de Manhattan entre plateaux :
def d(p,q): '''distance de Manhattan entre deux plateaux p et q. p et q sont deux tuples. ''' assert len(p)==len(q) return sum([abs(p[i]-q[i]) for i in range(len(p))])Algorithme des k plus proches voisins
Récapitulons : on sait classer les plateaux entre gagnants et non gagnants, et on dispose d’une distance entre plateaux. Pour aider un joueur à choisir la case à jouer (ce qu’on appelle une stratégie), on considère, quelque peu arbitrairement, qu’on a intérêt à viser un plateau qui a l’air gagnant, c’est-à-dire dont la distance à un (ou plusieurs) plateaux connus pour être gagnants, est petite.
Liste triée par distances
On associe donc, à un plateau
p(un tuple d’entiers), une listetabde tuples dont le premier élément est la distance entrepet l’enfant, et le deuxième élément est l’enfant lui-même. Le tri est alors fait selon les distances :def voisins(p): return sorted([(d(p,q),q) for q in enfants(p)])Majorité parmi les k plus proches voisins
Un entier positif
kétant donné, on regarde l’état (gagnant ou non) de l’enfant médian (c’est l’état majoritaire parmi leskplus proches voisins dep), et on considère que c’est probablement l’état dep:def major(k,p): kppv = voisins(p)[:k] etats = [gagnant(q[1]) for q in kppv] etats.sort() if etats: return etats[:k//2][-1]La stratégie proposée consiste alors à regarder, parmi les enfants du plateau
p, lesquels ont l’air (selon kNN) d’être gagnants, et lesquels n’en ont pas l’air. Ensuite, s’il y a au moins un plateau ayant l’air gagnant, on en choisit un au hasard parmi les plateaux ayant l’air gagnants, sinon on choisit au hasard un autre plateau :def strat(k,p): gagnants = [] perdants = [] for e in enfants(p): if major(k,e): gagnants.append(e) else: perdants.append(e) if gagnants: return choice(gagnants) else: return choice(perdants)Le choix de
kest fait empiriquement. Comme il y a souvent moins de 4 enfants, et qu’un ballotage est impossible s’il y a un nombre impair d’électeurs, la valeur de 3 paraît raisonnable. On dispose maintenant des fonctions nécessaires pour simuler une partie de ce jeu, l’IA jouant contre elle-même (comme alpha zero) :def simulpartie(p): k = 3 plateau = p joueur = 0 nom = ['Sud','Nord'] nomsens = {-1: 'gauche', 1: 'droite'} while not gagnant(plateau): print(plateau) print('C\'est à',nom[joueur],'de jouer.') q = strat(k,plateau) print(nom[joueur],'joue la case d\'indice',indice(plateau,q),'vers la',nomsens[sens(plateau,q)],'.') plateau = q joueur = 1-joueur if gagnant(plateau): print(plateau) print(nom[joueur],'ne pouvant plus semer, a perdu.')La stratégie choisit un enfant du plateau, et pour l’affichage on calcule la manière dont on peut passer du plateau actuel au plateau suivant, à l’aide des fonctions
indiceetsens. En fait la stratégie ressemble plutôt à une tactique :>>> simulpartie((1,2,2,1,1,2,2,1)) (1, 2, 2, 1, 1, 2, 2, 1) C'est à Sud de jouer. Sud joue la case d'indice 3 vers la gauche . (1, 2, 3, 0, 1, 2, 2, 1) C'est à Nord de jouer. Nord joue la case d'indice 5 vers la droite . (1, 2, 3, 0, 1, 0, 3, 2) C'est à Sud de jouer. Sud joue la case d'indice 0 vers la droite . (0, 3, 3, 0, 1, 0, 3, 2) C'est à Nord de jouer. Nord joue la case d'indice 1 vers la droite . (0, 0, 4, 1, 2, 0, 3, 2) C'est à Sud de jouer. Sud joue la case d'indice 3 vers la gauche . (0, 0, 5, 0, 2, 0, 3, 2) C'est à Nord de jouer. Nord joue la case d'indice 4 vers la gauche . (0, 0, 6, 1, 0, 0, 3, 2) C'est à Sud de jouer. Sud joue la case d'indice 3 vers la gauche . (0, 0, 7, 0, 0, 0, 3, 2) Nord ne pouvant plus semer, a perdu.L’écriture formatée, n’étant pas au programme, n’a pas été utilisée ici. Dans l’exemple ci-dessus, les joueurs n’ont pas joué au mieux, car sinon Nord aurait gagné (nombre de Grundy nul) :

Pour comparer avec la suite, on reessaye avec un plateau plus simple :
>>> simulpartie((2,2,2,2)) (2, 2, 2, 2) C'est à Sud de jouer. Sud joue la case d'indice 3 vers la gauche . (2, 3, 3, 0) C'est à Nord de jouer. Nord joue la case d'indice 0 vers la droite . (0, 4, 4, 0) Sud ne pouvant plus semer, a perdu.Là encore, les joueurs n’ont pas joué au mieux, puisqu’il y a une stratégie gagnante pour Sud, comme on le verra plus bas (le nombre de Grundy est égal à 2).
En Terminale
On peut en fait trouver la stratégie gagnante, en explorant le graphe du jeu. Celui-ci est défini en Terminale par un dictionnaire de listes d’adjacences :
def graphe(p): dico = {p: enfants(p)} d = {} while len(d) != len(dico): d = dico.copy() for k,v in d.items(): for q in v: if q not in d: dico[q] = enfants(q) return dicoOn a besoin d’une copie
ddu dictionnaire parce qu’il est (heureusement) impossible de modifier un objet mutable (ici un dictionnaire) pendant qu’on le parcourt.Pour obtenir un dessin du graphe, on utilise l’objet
Digraphdu modulegraphviz:def dessin(p): digraph = Digraph(format='pdf') dico = graphe(p) for k,v in dico.items(): for y in v: digraph.edge(str(k),str(y)) return digraphLa fonction parcourt le dictionnaire des listes d’adjacences, et pour chaque couple (k,y) de plateaux tels que l’arc (k,y) fait partie du graphe, crée l’arc dans le graphe orienté. Ensuite la commande
>>> dessin((2,2,2,2)).render('exple1')crée le graphe suivant :
où on voit que, si Sud avait joué (3,3,0,2) plutôt que (2,3,3,0) il aurait gagné, quoi que fasse Nord ensuite.
-

Jeux de semailles et information
Qu’est-ce que l’aléatoire ? Pour répondre à cette question, la théorie de la complexité de Kolmogorov répond que plus un objet (ou un algorithme) paraît complexe, plus il est aléatoire. Et Kolmogorov mesure la complexité d’un objet (une structure de données par exemple) par la longueur d’un algorithme permettant de construire cet objet. Cette idée, trop abstraite pour figurer un jour au programme d’informatique, s’illustre bien dans l’étude de jeux de semailles malawites.
En 1913, Meredith Sanderson, médecin colonel de l’armée britannique au Malawi (alors Nyasaland), publie dans le journal de l’institut royal anthropologique, un article titré Native Games of Central Africa, où il décrit des jeux de semailles au nom imprononçable, qui se jouent sur des plateaux de 4 rangées (2 rangées par joueur), comme ceci :

Le plateau ci-dessus est celui du nchuwa avant de jouer. Le jeu se déroule en trois phases :
- une phase préliminaire qui fait l’objet de cet article et qu’on détaillera donc plus bas,
- le jeu normal (règle ci-après) tant qu’au moins une case contient plusieurs graines (et alors on doit jouer une de ces cases),
- lorsque toutes las cases non vides sont des singletons (ne contiennent qu’une graine chacune), on a le droit de jouer une de ces cases singleton, mais uniquement si la case d’arrivée est vide, et prioritairement si cela permet de capturer des graines à l’adversaire.
Chaque joueur à son tour sème les graines d’une case (contenant au moins 2 graines) dans le sens trigonométrique (comme dans les jeux de l’hémisphère Nord), représenté par des flèches (bleues pour Sud, rouges pour Nord) sur ce graphique :

Si la dernière graine du semis tombe dans une case non vide (qui contient donc au moins 2 graines) on prend toutes ces graines et on les resème (comme dans les jeux asiatiques). Le tour de jeu ne s’achève que lorsque la dernière graine tombe dans une case vide (comme dans les jeux asiatiques mais aussi un jeu dahoméen du XIXe siècle). Au moment où le tour de jeu s’arrête, si la dernière graine est tombée dans une case vide de la rangée intérieure, alors
- s’il y a des graines juste en face (dans la rangée intérieure de l’adversaire), on les capture (elles sont alors définitivement retirées du plateau),
- si, en plus, il y a aussi des graines dans la même colonne mais au fond (rangée extérieure de l’adversaire), on les capture aussi.
(dans le cas particulier du nchuwa, on peut aussi capturer les graines d’une autre case de l’adversaire, ce qui accélère le jeu par rapport aux variantes qu’on verra plus bas)
Le but du jeu est de prendre toutes les graines de l’adversaire.
Mais en fait, aucun des jeux observés par Sanderson n’a une configuration initiale aussi simple que 2 graines par case. Sanderson décrit des algorithmes pour (re)constituer la position initiale. On va les détailler ci-dessous.
Nchuwa
La configuration initiale est en fait celle-ci :

Pour obtenir cette position, on part de celle où il y a 2 graines par case, puis
- on sème vers la gauche (sans resemer) celles qui sont à droite dans la rangée intérieure,
- on sème les deux graines de la case suivante (troisième case en partant de la gauche), toujours vers la gauche,
- on sème les deux suivantes (première case de la rangée extérieure) mais vers la droite (en fait on suit le circuit),
- et on sème les deux graines qui sont dans la quatrième case à partir de la gauche (toujours vers la droite).
L’algorithme peut se résumer à : on sème dans le sens trigonométrique (à partir de la case à droite de la rangée intérieure), la première case qu’on trouve et qui contient deux graines, jusqu’à ce qu’il ne reste que des cases à trois graines.
Cet algorithme, ainsi que la position de départ (2 graines par case) est plus facile à retenir que la vraie position initiale (3 graines par case : mais où sont les cases vides ?). Ceci illustre la théorie de Kolmogorov : au lieu de mémoriser l’information qui se trouve dans le plateau de jeu, il est plus facile de mémoriser l’algorithme, qui permet une compression de l’information. D’ailleurs l’entropie du plateau avec 2 graines par case est 4,584962500721156 alors que celle de la vraie position initiale est 4 qui est plus petite.
Njombwa
avec 61 graines
Dans le jeu de njombwa, la position initiale est celle-ci :

L’entropie de ce plateau est 4,392810492839524 qui est voisine de celle du jeu nchuwa, mais Sanderson donne un algorithme permettant de construire ce plateau à partir de celui ci-dessous, d’entropie beaucoup pus faible puisqu’environ égale à 1,5349547231656377 :

Chaque case d’angle contient 29 graines.
Voici l’algorithme :
- Nord sème les deux graines vers sa droite,
- Sud fait pareil,
- chacun son tour sème les deux graines dans le sens trigonométrique,
- mais lorsque la seconde graine tombe en face d’une case occupée, on capture la (ou les) graine(s) de cette case (ce qui fait qu’au début du jeu, il n’y a que 61 graines) et on passe à l’étape suivante (dès la première capture),
- puis Nord (et ensuite Sud) sème les 29 graines, répétitivement, jusqu’à ce que la dernière graine tombe dans une case vide.
En résumé, on met ses 32 graines dans les cases en bas à gauche, dans l’ordre (29,2,1), puis chacun son tour sème 2 graines, jusqu’à la première capture, et ensuite on sème ses 29 graines jusqu’à ce que la dernière graine tombe dans une case vide. Cet algorithme est plus facile à retenir que la répartition avant de jouer.
Dans ce jeu, on ne capture que les graines de la colonne où est tombée la dernière graine (si celle-ci est tombée dans la rangée intérieure), ce qui fait que le jeu est plus simple que le nchuwa. Il faut dire que ce jeu est celui des Yao, proches du Mozambique (et par-delà, de Madagascar), alors que le nchuwa était joué par les Tonga, plus proches de la Zambie (et par-delà, de l’ex Zaïre) où plusieurs jeux comprennent la capture dans plus de deux cases.
avec 28 graines
Dans cette variante du njombwa, le plateau initial (juste avant de jouer) est celui-ci, d’entropie 3,8073549220576055 :

Sanderson donne un algorithme pour créer ce plateau à partir de celui-ci, d’entropie 5 :

Voici l’algorithme :
- semer la graine qui est dans la case en bas à droite, dans le sens trigonométrique, et répétitivement (c’est-à-dire recommencer à semer les deux graines etc.), jusqu’à ce qu’on ait fait un tour,
- transférer dans la case en bas à droite (plutôt que les semer), les deux graines qui sont là où est tombée la dernière graine,
- retirer du plateau les deux graines de droite dans la rangée intérieure.
avec 58 graines
Pas besoin d’algorithme pour trouver la position initiale, d’entropie 4,8924637537482605 :

Mais on peut quand même : mettre 2 graines dans chaque case, puis vider la dernière case (en haut à gauche) et enlever une graine de l’avant-dernière case.
Msuwa na kunja
Dans ce jeu, la disposition initiale (d’entropie 4) est simple :

Mais on peut aussi la recréer par un algorithme : placer une graine par case, puis transférer les graines (colonne par colonne) de la rangée intérieure vers la rangée extérieure. L’algorithme fait baisser d’une unité l’entropie du plateau.
Une autre différence avec ce jeu, est que lorsqu’on a capturé les graines d’une colonne, on peut choisir 2 autres cases (et non 1 comme au njombwa) dont on capture les graines. Cela tend à accélérer le jeu.
Spreta
Dans ce jeu, la position initiale (d’entropie 4,875) est celle-ci:

On peut la reconstituer à partir du plateau à une graine par case, en transférant la graine qui est en haut à droite, dans la troisième case à partir de la gauche.
Le premier tour du jeu est donc imposé puisque comme il y a une case contenant 2 graines, on ne peut jouer que cette case. Comme au msuwa na kunja, on capture depuis deux cases supplémentaires de son choix.
Conclusion
Préparer le plateau de jeu en vue d’une partie de njombwa ou similaire est en fait un jeu à un joueur. On peut d’ailleurs se livrer à cette activité sans la prolonger par une partie d’un jeu. On peut
- donner une configuration initiale (par exemple 2 graines par case) et un algorithme, et demander la configuration finale,
- donner une configuration finale et un algorithme et demander quelle configuration initiale peut donner, après application de l’algorithme, la configuration finale donnée (exercice difficile),
- donner les configurations initiale et finale et demander l’algorithme (c’est ce qu’a fait Sanderson).
Un exercice similaire avait été fait en PS avec le jeu de Lewthwaite.
-
Séminaire 17 décembre 2025
13h30 — 18h00, Labomath du lycée Roland GARROS, Le Tampon
Lien pour nous rejoindre en visio
- 14h-14h45 Jeux de cartes pour travailler les fractions au cycles 2 et 3, Laurence Piron et Hélène Guardenti
- 14h45-15h45 Accompagner les PES en géométrie, Vincent Dambreville. Retour d’expérience et pistes pour proposer des aides opérationnelles aux PES.
- PAUSE
- 16h15-18h Groupes de travail.
- Labomath & Unité apprenantes (reprise du thème du mois dernier qui avait été annulé):Comment les rendre attractifs, productifs, efficaces et moins chronophages? Comment valoriser les ressources produites ? Animatrice : Marion Le Gonidec
- Résolution graphique de problèmes de proportionnalité au cycle 3: travail de production de ressources, rédaction d’énoncés, réflexion sur la fabrication ou la complétion des nomogrammes. Animateurs: Alain Busser et Dominique Tournès
-

Fafy impartial, un jeu de semaille pour le CP
Le jeu Fafy (et, ici, sa version impartiale) est un jeu (de semaille) à deux joueurs, où n’intervient pas le hasard, dont une partie typique dure peu de temps (environ une minute) et dont la règle est simple.
Matériel nécessaire
Le plateau de jeu est un alignement de cases ou de cupules, et les pions sont des cailloux, des billes ou des graines (éviter que les enfants aient envie de les ingérer !). On peut donc jouer à fafy sur la plage, en alignant des creux dans le sable et avec des coquillages ou des galets :

On peut aussi utiliser de la craie pour dessiner une grille de cases (comme la marelle, mais avec seulement un alignement de cases) et jouer avec des billes posées dans les cases :

On peut aussi, comme dans la région des grands lacs, creuser des trous alignés dans le sol et jouer avec des graines, ou utiliser seule la moitié d’un plateau d’awalé avec des graines ou des billes (ici, des graines de haricot que les enfants n’aiment pas et ne risquent pas trop de mettre dans la bouche) :

On peut aussi jouer en intérieur, par exemple en dessinant une grille sur une feuille, et en posant des jetons dans les cases. Ou en constituant le plateau de jeu par un alignement de godets ou de soucoupes, avec des graines :

ou des billes :

Ce matériel (billes dans des soucoupes ou des barquettes) est d’ailleurs intéressant pour d’autres activités sur les nombres (construction du nombre en CP, ou fractions en CE).
Enfin, il est même possible de jouer à fafy avec des cartes, disposées ainsi (dos en l’air, par piles alignées) :

Ma préférence personnelle va à la grille dessinée sur une feuille et aux jetons dans les cases, car les jetons peuvent être empilés ou non : en jouant, on a souvent besoin de dénombrer les graines/pierres/billes/cartes/jetons.

Règle du jeu
Les deux joueurs se mettent d’accord sur une disposition initiale des graines (par exemple, une graine par case). Ensuite chacun son tour
• choisit une case non vide (il y a au moins une graine dedans),
• met dans sa main toutes les graines que contient cette case (de sorte que la case est désormais vide),
• puis sème les graines, une par une, à partir de la case voisine, vers sa droite.
Si, lors du semis, une graine sort du plateau ou tombe dans une case vide, le jeu est perdu (plus précisément, le premier qui ne peut plus semer sans qu’une des graines tombe dans une case vide ou sorte du plateau, est bloqué et donc perdant).
Par exemple ce jeu à 9 graines ne permet qu’un seul coup de jeu : semer les deux graines de gauche vers la droite, ou les deux graines de droite vers la gauche :

Ce genre de situation (jeu trop simple voire injouable) est fréquent lorsque les enfants veulent mettre beaucoup de graines, comme ici où seules les deux graines (sur un total de 18 !) sont semables, et encore, uniquement vers la droite :

Le jeu fafy, créé par un élève de GS, devrait a priori être facilement jouable en CP. Il permet de faire le lien entre les représentations cardinale et ordinale des nombres, et fait pratiquer des soustractions (par exemple, ci-dessus, je soustrais à 4 – numéro de la dernière case – le nombre 2 – nombre de graines dans la deuxième case – pour voir que le semis ne sort pas du plateau, et que donc cette case est jouable). Mais le point difficile de la règle du jeu est sème les graines, une par une, à partir de la case voisine, vers sa droite : ne peut jouer à ce jeu, qu’un élève déjà latéralisé, et ça, c’est de plus en plus rare en CP (le créateur du jeu était un des rares élèves latéralisés en GS à l’époque). D’où l’idée qui m’est venue, de simplement enlever cette partie de la règle du jeu, pour aboutir à la
Règle du fafy impartial
Les deux joueurs se mettent d’accord sur une disposition initiale des graines (par exemple, une graine par case). Ensuite chacun son tour
• choisit une case non vide (il y a au moins une graine dedans),
• met dans sa main toutes les graines que contient cette case (de sorte que la case est désormais vide),
• puis sème les graines, une par une, à partir de la case voisine, dans le sens de son choix.
Si, lors du semis, une graine sort du plateau ou tombe dans une case vide, le jeu est perdu.
Exemple de partie
Les deux joueurs s’appellent respectivement Sud et Nord. Ils se font face, avec entre eux ce plateau de 12 graines (configuration inventée par un astrophysicien) :

Sud commence, et choisit de semer vers la droite une graine (on peut ne semer qu’une graine du moment que la case voisine n’est pas vide) vers le milieu du plateau :

C’est maintenant à Nord de jouer. Nord décide de semer (vers la gauche) deux graines :

Pour l’instant seules les trois premières cases (en encore, pas la deuxième) sont encore jouables : le jeu est décomposé en trois blocs, or le bloc du milieu (deux cases à 3 graines) est bloqué (c’est un bloc bloqué !) parce qu’entouré de cases vides, et la case de droite est bloquée aussi parce qu’à sa gauche il y a une case vide et à sa droite il y a l’extérieur du plateau. Sud a donc deux choix :
- semer vers la gauche les deux graines de la troisième case,
- semer vers la droite l’unique graine de la première case.
C’est ce choix qui est fait :

C’est à Nord de jouer, mais Nord ne peut pas semer, depuis aucune case non vide, sans qu’au moins une graine tombe dans une case vide ou quitte le plateau : Nord a perdu.
En fait, dans ce jeu, Sud a mal joué au premier coup, et si Nord a perdu, c’est parce que Nord aussi a mal joué : en semant vers la droite les deux graines de la case centrale, Nord eût bénéficié d’une stratégie gagnante !
Vers un tournoi de fafy impartial
Avec du matériel disponible en grande quantité, on peut faire jouer toute une classe de CP (voire après !) : pour une classe de 24 élèves, il faut une centaine de jetons (ou graines ou billes ou cartes etc.) et 12 plateaux de jeu (dessin d’une grille sur une feuille A4) comme par exemple celui-ci, dessiné au tableur (les élèves peuvent aussi vouloir dessiner eux-mêmes la grille) :
Ensuite, chaque pair de joueurs se voit remettre une dizaine de jetons, puis Sud (par exemple) pose certains de ces jetons (pas forcément tous) à sa guise dans le plateau.
Une fois que les graines sont posées par Sud, Nord va appliquer la règle du gâteau : c’est Nord qui décide qui joue en premier : autrement dit, si Sud a disposé les jetons de telle manière que la victoire soit trop évidente pour celui qui joue en premier, Nord décide de jouer en premier. Cela force Sud à disposer les jetons de manière relativement équitable.
Ensuite la partie se déroule selon la règle donnée plus haut, et au bout de relativement peu de temps, l’un des joueurs est bloqué alors que c’était à son tour de jouer : ce joueur est perdant.
Après ce premier tour de jeu, il y a 12 gagnants et 12 perdants. On organise alors un second tour où les 12 gagnants jouent entre eux, et les 12 perdants jouent entre eux (c’est la phase de repêchage).
Après le second tour, il y a 12 gagnants, qui ensuite seront les seuls à continuer à jouer (les autres arbitrent car le risque de triche est élevé ; d’ailleurs au cas où chaque joueur accuse l’autre de triche, on considère que la partie est nulle, ou plutôt que les deux joueurs ont perdu ; j’ai déjà vu des mauvais joueurs en CM 2 !).
Au troisième tour il n’y a donc plus que 6 tables de jeu. Et après le troisième tour il n’y a que 6 gagnants, qui seront les seuls à jouer au quatrième tour. On les regroupe alors en 3 tables de jeu, et à l’issue du quatrième tour il y aura 3 gagnants qui seront les gagnants du jour.
En effet, une partie de ce jeu dure environ une minute, et si on ajoute 4 minutes pour la répartition des joueurs à l’issue de chaque tour, le tournoi ne dure guère plus qu’un quart d’heure, ce qui permet de multiplier ces tournois.
Compétences travaillées dans ce jeu
En jouant à fafy impartial, on apprend à perdre (compétence travaillée dès le cycle 1) mais aussi
- la motricité fine (semer des graines ou distribuer des cartes, ce n’est pas si facile),
- la planification (recherche d’une stratégie gagnante),
- la latéralisation (même si le jeu est impartial, la droite de Nord correspond à la gauche de Sud),
- la botanique (d’où viennent ces graines, peuvent-elles germer ?)
- le dénombrement et le comptage des petits nombres (graines dans les cases, nombre de cases) voire des plus grands (le nombre total de graines est invariant, ce qui permet de détecter la triche),
- la géométrie (si on dessine la grille du jeu),
- les motifs,
- les fractions (dessin du plateau ci-dessus),
- la vision centrale (attention de l’élève),
- la statistique (le plateau de jeu est un histogramme).
Un problème pour enseigner la règle du jeu à plusieurs élèves en même temps est qu’au delà de deux élèves par adulte, on ne peut pas mobiliser le canal kinesthésique. Pour tenter d’y remédier, cette présentation a été vidéoprojetée en classe :
Une séance d’une heure se déroule typiquement ainsi :
- une vingtaine de minutes avec la présentation ci-dessus, assortie de questions sur les nombres (comparaison, addition et même soustraction),
- une vingtaine de minutes à faire jouer les élèves, en passant entre les tables, et en corrigeant les (parfois nombreuses) erreurs du jeu ou incompréhensions de la règle,
- le reste est consacré à faire jouer les élèves en changeant régulièrement d’adversaire pour voir si des championnes émergent et laisser les élèves expliquer la règle du jeu avec leurs mots dans une formation par les pairs.
Voici ce que ça a donné le 9 décembre 2025 :
Il s’est avéré que le jeu fait beaucoup travailler la vision, en faisant établir le lien entre le nombre de graines à semer et les cases où elles vont tomber (il est important d’anticiper dans ce jeu).
Un utilitaire pour examiner un plateau de fafy impartial (en particulier chercher qui a l’avantage dans ce jeu) est disponible ici.
-
Seminaire du 19 novembre 2025
13h30 — 18h00, Parc Technologique Universitaire, Saint Denis, Bat 2, salle 23.6
Lien pour nous rejoindre en visio
- 14h – 15h45 Groupes de réflexion: (Rv en salle séminaire LIM, bat2, 3e étage)
- Labomath & UA. (salle S22.2)Comment les rendre attractifs, productifs, efficaces et moins chronophages? Comment valoriser les ressources produites ? Animatrice : Marion Le Gonidec
- :Pensée informatique et programmation aux Cycles 3 & 4 (Salle séminaire LIM)Animateurs : Sebastien Hoarau et Christophe Declercq
- PAUSE CAFÉ
- 16h10-16h15 Un petit mot sur l’organisation de la prochaine édition du forum Ma(th)nipulez!
- 16h15 – 16h 45 Restitution des Groupes de reflexion, pour mettre en commun et prolonger les discussions avec tous.
- 16h45 – 17h15 L’intuiquerre, Jérôme Marquetout Présentation de l’outil, de son utilisation et de ses avantages.
- 17h15-18h00 Comment sauver les « devoirs maison » à l’ère de l’IA ?, Philippe Testud. Présentation d’expérimentations, échange et pistes. Mise en parallèle avec l’impact que l’IA a eu sur le monde des échecs (Le jeu, bien entendu…).
- 14h – 15h45 Groupes de réflexion: (Rv en salle séminaire LIM, bat2, 3e étage)






































