Aller au contenu
Martin Poiroux
Langue : English
Projets · CodeCode · Jeux · 2026

game-solver

Un solveur de jeux combinatoires. La question n’est pas de bien jouer : c’est de savoir qui gagne quand les deux camps jouent parfaitement.

Essayer

Se charge dans la page, au clic seulement.

Un moteur d’échecs cherche un bon coup dans un temps donné. Un solveur cherche autre chose : la valeur exacte de la position, sous l’hypothèse que personne ne se trompe plus. Ce sont deux métiers, et le second ne rend une réponse qu’après l’avoir démontrée.

Schéma animé : la résolution d’un jeu. Les fins de partie sont connues, et le résultat remonte niveau par niveau jusqu’à dire qui gagne. Survolez un nœud pour son verdict.

Deux jeux tournent aujourd’hui : le morpion, qui tient dans une poignée de nœuds, et le Puissance 4, qui est la vraie cible. La méthode est un negamax alpha-bêta mémorisé, compilé en WebAssembly depuis de l’AssemblyScript et réparti dans un pool de workers, un par cœur, une colonne chacun, avec un repli en JavaScript si le WASM manque. Chaque coup possible reçoit alors son étiquette exacte : gagne, perd, ou nulle.

Le morpion, résolu en entier en moins d’une milliseconde : une fois que O menace, seule la parade garde la nulle, tout le reste perd.

C’est là que la combinatoire se fait sentir. Analyser la position vide au Puissance 4 coûte une dizaine de minutes, ce qui est intenable dans une interface : l’analyse par coup ne démarre donc qu’au septième coup joué, et avant cela le solveur se contente d’une heuristique sûre, jouer au centre et ne jamais entrer dans une ligne perdante. Le budget est plafonné à huit millions de nœuds par worker.

La justesse ne se juge pas à l’œil sur ce genre de programme : les positions de test sont confrontées au solveur de référence de Pascal Pons, qui donne la valeur attestée. Un solveur qui se trompe en silence est plus gênant qu’un moteur médiocre, puisqu’il prétend démontrer.

Projet privé, pas de lien public