Le golf de regex de xkcd : l'énigme derrière la BD 1313
Comment la BD xkcd sur le golf de regex a lancé un genre d'énigme, comment Peter Norvig l'a résolue, et où jouer à une nouvelle partie de golf de regex chaque jour.

· 6 min de lecture · Mis à jour le
/j|bu|oo/
à attraper
- jefferson
- buchanan
- hoover
à épargner
- fremont
- dewey
- gore
Le golf de regex, l'énigme rendue célèbre par la BD xkcd 1313, c'est le jeu qui consiste à écrire l'expression régulière la plus courte qui correspond à tous les mots d'une liste et à aucun d'une autre. Comme au vrai golf, moins de coups, c'est mieux. Voici toute l'idée en un seul plateau, essayez :
Attrapez les mots qui finissent par -ing, épargnez les autres.
Cibles · 0/5 attrapées
- singcible
- ringcible
- goingcible
- thingcible
- swingcible
Innocents · erreurs : 0
- ingotinnocent
- fringeinnocent
- kingsinnocent
- dingoinnocent
- hingeinnocent
Tapez une regex — le plateau se met à jour en direct.
C'est tout le jeu. Le plaisir, c'est de voir à quelle vitesse il cesse d'être facile.
01La BD qui lui a donné son nom
En janvier 2014, xkcd #1313, « Regex Golf » a fait découvrir le jeu à beaucoup de développeurs. Sa première case montre une regex qui correspond aux sous-titres de Star Wars mais pas à ceux de Star Trek :
/M | [TN]|B/Doit correspondre · Star Wars6/6
- THE PHANTOM MENACE
- ATTACK OF THE CLONES
- REVENGE OF THE SITH
- A NEW HOPE
- THE EMPIRE STRIKES BACK
- RETURN OF THE JEDI
Ne doit pas · Star Trek5/5
- THE WRATH OF KHAN
- THE SEARCH FOR SPOCK
- THE VOYAGE HOME
- THE FINAL FRONTIER
- THE UNDISCOVERED COUNTRY
Et le texte au survol de la BD fait monter les enchères : un motif de 63 caractères qui correspond au nom de famille de chaque président américain élu, mais à aucun des candidats qu'ils ont battus.
/bu|[rn]t|[coy]e|[mtg]a|j|iso|n[hl]|[ae]d|lev|sh|[lnd]i|[po]o|ls/Touchez un fragment pour le repérer
On dirait du charabia, mais lisez-la comme une liste : chaque fragment entre deux barres | attrape quelques présidents. j à lui seul attrape Jefferson, Jackson et Johnson.
02Le bug dans la chute
Le même mois, Peter Norvig, alors directeur de la recherche chez Google et coauteur du manuel de référence en IA, a écrit un notebook pour résoudre le golf de regex automatiquement. Son premier test vérifiait la réponse de la BD. Il a échoué :
/bu|[rn]t|[coy]e|[mtg]a|j|iso|n[hl]|[ae]d|lev|sh|[lnd]i|[po]o|ls/Doit correspondre · Vainqueurs5/5
- lincoln
- obama
- kennedy
- reagan
- washington
Ne doit pas · Perdants4/5
- romney
- mccain
- dewey
- gore
- fremont
[rn]t attrape fremont : John C. Frémont, battu à l'élection de 1856 par James Buchanan. Norvig a compris que Randall avait retenu Millard Fillmore, le candidat d'un tiers parti cette année-là, comme adversaire de Buchanan. Une réponse au golf de regex ne vaut que ce que valent ses listes de mots.
03Comment un ordinateur joue au golf de regex
Le solveur de Norvig est un joli raisonnement, et il vaut la peine d'être connu parce que c'est aussi comme ça que pensent les bons golfeurs humains :
- Rassembler des fragments candidats. Prenez tous les petits morceaux des noms des vainqueurs, d'un à quatre caractères, avec certaines lettres remplacées par
., commebu,a.aour.e$. - Ne garder que les fragments sûrs. Un fragment n'est utile que s'il correspond à au moins un vainqueur et à aucun perdant.
- Couvrir les vainqueurs. Choisissez ensuite des fragments jusqu'à ce que chaque vainqueur soit couvert. C'est le célèbre problème de couverture par ensembles, qui est NP-difficile : le solveur procède donc de façon gloutonne, en prenant à chaque fois le fragment qui offre le meilleur compromis entre vainqueurs couverts et caractères dépensés.
- Les relier avec
|.
Le résultat a battu la BD de 9 caractères :
Plateaulincoln · obama · kennedy · reagan · washington vs fremont · romney · mccain · dewey · gore
- xkcd #13135/5 attrapées, erreurs : 163
/bu|[rn]t|[coy]e|[mtg]a|j|iso|n[hl]|[ae]d|lev|sh|[lnd]i|[po]o|ls/ - solveur de norvigrésout54
/a.a|a..i|j|li|a.t|i..n|oo|bu|ay.|n.e|r.e$|ru|ls|po|v.l/
Il a aussi raboté la case Star Wars, de 10 caractères à 9 :
PlateauTHE PHANTOM MENACE · ATTACK OF THE CLONES · REVENGE OF THE SITH · A NEW HOPE · THE EMPIRE STRIKES BACK · RETURN OF THE JEDI vs THE WRATH OF KHAN · THE SEARCH FOR SPOCK · THE VOYAGE HOME · THE FINAL FRONTIER · THE UNDISCOVERED COUNTRY
- xkcdrésout10
/M | [TN]|B/ - norvigrésout9
/ T|E.P|PE/
04Du puzzle au rituel quotidien
Des jeux dans le navigateur comme regex.alf.nu ont transformé l'idée en packs de niveaux à enchaîner. Regex Hunter prend l'autre chemin, celui de Wordle :
Une chasse par jour
La même pour tout le monde, avec un par à battre et une série à entretenir.
Packs d'entraînement
Chacun travaille une technique, des ancres aux références arrière.
Chasses de la communauté et Sprees
Des chasses écrites par les joueurs, et des courses en direct contre d'autres sur les mêmes plateaux.
Académie et bac à sable
Apprenez les regex de zéro, puis testez tout ce que vous voulez.
05Un plateau tiré du notebook de Norvig
Norvig a aussi opposé les prénoms de bébés les plus populaires. Voici cinq prénoms de garçons et cinq de filles ; le par correspond à la longueur de sa réponse. Saurez-vous l'égaler, voire le battre ?
Attrapez les prénoms de garçons, épargnez les prénoms de filles.
Cibles · 0/5 attrapées
- jacobcible
- masoncible
- ethancible
- noahcible
- aidencible
Innocents · erreurs : 0
- madisoninnocent
- emilyinnocent
- abigailinnocent
- sophiainnocent
- oliviainnocent
Tapez une regex — le plateau se met à jour en direct.
06Jouer au golf de regex aujourd'hui
Jouer la chasse du jour → Une nouvelle énigme de golf de regex chaque jour : attrapez les monstres, épargnez les innocents, égalez ou battez le par. Gratuit, dans votre navigateur, sans inscription.
Si vous préférez la technique à l'histoire, lisez Stratégies pour le golf de regex : comment battre le par.