El golf de regex de xkcd: el puzzle detrás del cómic 1313
Cómo el cómic de xkcd sobre golf de regex inició un género de puzzles, cómo lo resolvió Peter Norvig y dónde jugar un nuevo puzzle de golf de regex cada día.

· 6 min de lectura · Actualizado el
/j|bu|oo/
atrapa
- jefferson
- buchanan
- hoover
deja libre
- fremont
- dewey
- gore
El golf de regex, el puzzle que popularizó el cómic 1313 de xkcd, es el juego de escribir la expresión regular más corta que coincida con todas las palabras de una lista y con ninguna de otra. Como en el golf de verdad, gana quien da menos golpes. Aquí tienes la idea completa en un solo tablero; pruébalo:
Atrapa las palabras que terminan en -ing y deja libres las demás.
Objetivos · 0/5 atrapados
- singobjetivo
- ringobjetivo
- goingobjetivo
- thingobjetivo
- swingobjetivo
Inocentes · 0 errores
- ingotinocente
- fringeinocente
- kingsinocente
- dingoinocente
- hingeinocente
Escribe una regex: el tablero se actualiza mientras escribes.
Ese es todo el juego. Lo divertido es lo rápido que deja de ser fácil.
01El cómic que le dio nombre
En enero de 2014, el xkcd #1313, “Regex Golf”, presentó el juego a muchísimos programadores. Su primera viñeta muestra una regex que coincide con los subtítulos de Star Wars pero no con los de Star Trek:
/M | [TN]|B/Debe coincidir · 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
No debe · Star Trek5/5
- THE WRATH OF KHAN
- THE SEARCH FOR SPOCK
- THE VOYAGE HOME
- THE FINAL FRONTIER
- THE UNDISCOVERED COUNTRY
Y el texto emergente del cómic sube la apuesta: un patrón de 63 caracteres que coincide con los apellidos de todos los presidentes electos de EE. UU. pero con ninguno de los candidatos a los que derrotaron.
/bu|[rn]t|[coy]e|[mtg]a|j|iso|n[hl]|[ae]d|lev|sh|[lnd]i|[po]o|ls/Toca un fragmento para encontrarlo
Parece un galimatías, pero léela como una lista: cada fragmento entre las barras | atrapa a unos cuantos presidentes. Solo con j caen Jefferson, Jackson y Johnson.
02El error del remate
Ese mismo mes, Peter Norvig, entonces director de investigación de Google y coautor del libro de texto de referencia sobre IA, escribió un notebook para resolver el golf de regex de forma automática. Lo primero que hizo su prueba fue comprobar la respuesta del cómic. Falló:
/bu|[rn]t|[coy]e|[mtg]a|j|iso|n[hl]|[ae]d|lev|sh|[lnd]i|[po]o|ls/Debe coincidir · Ganadores5/5
- lincoln
- obama
- kennedy
- reagan
- washington
No debe · Perdedores4/5
- romney
- mccain
- dewey
- gore
- fremont
[rn]t atrapa a fremont: John C. Frémont, que perdió las elecciones de 1856 frente a James Buchanan. Norvig dedujo que Randall había tomado como rival de Buchanan a Millard Fillmore, el candidato de un tercer partido ese año. Una respuesta de golf de regex solo es tan buena como sus listas de palabras.
03Cómo juega al golf de regex una máquina
El solucionador de Norvig es un razonamiento elegante, y merece la pena conocerlo porque es también como piensan los buenos golfistas humanos:
- Reunir fragmentos candidatos. Toma todos los fragmentos cortos de los nombres de los ganadores, de uno a cuatro caracteres y con algunas letras cambiadas por
., comobu,a.aor.e$. - Quedarse solo con los seguros. Un fragmento solo sirve si coincide con al menos un ganador y con ningún perdedor.
- Cubrir a los ganadores. Ahora elige fragmentos hasta que todos los ganadores coincidan. Es el clásico problema de cobertura de conjuntos, que es NP-difícil, así que el solucionador elige de forma voraz: cada vez toma el fragmento con el mejor equilibrio entre ganadores cubiertos y caracteres gastados.
- Unirlos con
|.
El resultado mejoró al cómic en 9 caracteres:
Tablerolincoln · obama · kennedy · reagan · washington vs fremont · romney · mccain · dewey · gore
- xkcd #13135/5 atrapados, 1 error63
/bu|[rn]t|[coy]e|[mtg]a|j|iso|n[hl]|[ae]d|lev|sh|[lnd]i|[po]o|ls/ - solucionador de norviglo resuelve54
/a.a|a..i|j|li|a.t|i..n|oo|bu|ay.|n.e|r.e$|ru|ls|po|v.l/
También recortó la viñeta de Star Wars, de 10 caracteres a 9:
TableroTHE 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
- xkcdlo resuelve10
/M | [TN]|B/ - norviglo resuelve9
/ T|E.P|PE/
04Del puzzle al ritual diario
Juegos de navegador como regex.alf.nu convirtieron la idea en packs de niveles para ir superando uno tras otro. Regex Hunter toma el otro camino, el de Wordle:
Una caza al día
La misma para todos, con un par que superar y una racha que mantener.
Packs de práctica
Cada uno entrena una técnica, de las anclas a las referencias inversas.
Cazas de la comunidad y Sprees
Cazas escritas por jugadores y carreras en vivo contra otras personas en los mismos tableros.
Academia y Zona de pruebas
Aprende regex desde cero y luego prueba lo que quieras.
05Un tablero del notebook de Norvig
Norvig también enfrentó entre sí los nombres de bebé más populares. Aquí tienes cinco nombres de niño y cinco de niña; el par es la longitud de su respuesta. ¿Puedes igualarlo, o superarlo?
Atrapa los nombres de niño y deja libres los nombres de niña.
Objetivos · 0/5 atrapados
- jacobobjetivo
- masonobjetivo
- ethanobjetivo
- noahobjetivo
- aidenobjetivo
Inocentes · 0 errores
- madisoninocente
- emilyinocente
- abigailinocente
- sophiainocente
- oliviainocente
Escribe una regex: el tablero se actualiza mientras escribes.
06Juega al golf de regex hoy
Jugar la caza del día → Un nuevo puzzle de golf de regex cada día: atrapa a los monstruos, deja libres a los inocentes, iguala o mejora el par. Gratis, en tu navegador, sin registro.
Si prefieres técnica en lugar de historia, lee Estrategias de golf de regex: cómo superar el par.