Los botones Pista y Automático que hay bajo el tablero no dan consejos enlatados. Ejecutan una búsqueda real sobre tu posición exacta, en tu navegador, y devuelven la jugada mejor valorada. Pista muestra una flecha sobre el tablero; Automático sigue haciendo esa jugada hasta que termina la partida. No se envía nada a ningún servidor.
Si se le deja jugar solo desde un tablero nuevo, esa búsqueda termina con una casilla 2048 en el 91,4 % de las partidas. Así es como lo consigue.
La herramienta obvia para un árbol de juego es minimax: suponer que el rival elige la peor respuesta posible y planificar contra ella. El 2048 no tiene rival. Tiene una casilla que aparece al azar, y esa diferencia importa muchísimo.
Un jugador minimax trata la aparición de casillas como algo malintencionado y supone que el 4 siempre cae en la peor celda posible. Eso produce un juego paranoico y defensivo, porque gasta todo su presupuesto en protegerse de un tablero que se da quizá una vez de cada treinta. Expectimax, en cambio, toma el resultado medio de todas las apariciones que pueden ocurrir de verdad, ponderado por la probabilidad de cada una. Juega con las probabilidades en lugar de con la pesadilla — el modelo correcto cuando el azar te es indiferente.
Así que la búsqueda alterna entre dos tipos de nodo. En un nodo del jugador prueba las cuatro direcciones y se queda con el mejor resultado. En un nodo de azar coloca un 2 en cada celda vacía con peso 0,9 y un 4 en cada celda vacía con peso 0,1, evalúa cada caso y hace la media — el mismo reparto 90/10 que usa el propio juego cuando hace aparecer una casilla.
El árbol no puede explorarse hasta el final de la partida, así que en el fondo de la búsqueda el solucionador puntúa la posición con cuatro medidas, sumadas con estos pesos:
| Término | Peso | Qué mide |
|---|---|---|
| Celdas vacías | 2.7 | Simplemente cuántas celdas están libres. Es con diferencia el término más pesado — quedarse sin espacio es como se pierde. |
| Monotonía | 1 | Si los valores crecen de forma constante en una dirección a lo largo de filas y columnas, en lugar de ir en zigzag. |
| Esquina | 1 | Una bonificación, proporcional al tamaño, cuando la casilla más grande está en una de las cuatro esquinas. |
| Suavidad | 0.1 | Una penalización para casillas vecinas de magnitudes muy distintas — un 2 junto a un 512 nunca podrá fusionarse, así que es peso muerto. |
Tres de esas cuatro no son más que el consejo humano de siempre escrito como aritmética: mantén espacio libre, mantén el orden, mantén la casilla grande en una esquina. Los pesos son lo que convierte el consejo en decisiones — la búsqueda acepta sin problema una peor posición de esquina si a cambio gana suficientes celdas vacías, y ese intercambio es justo el que la gente suele equivocar en la dirección contraria.
Cada término usa el logaritmo en base 2 del valor de una casilla en lugar del valor en sí, de modo que el salto de 2 a 4 cuenta lo mismo que el de 1024 a 2048. Sin eso, la casilla más grande del tablero ahogaría todo lo demás.
Los nodos de azar se ramifican una vez por cada celda vacía, y por partida doble. Un tablero abierto con diez celdas libres tiene veinte ramas en cada nivel; uno casi lleno con tres celdas libres tiene seis. Explorar ambos a la misma profundidad sería hacerlo al revés — el tablero abierto es fácil de sobrevivir y caro de explorar, y el tablero lleno es justo lo contrario.
Así que la profundidad se adapta al tablero:
| Celdas vacías | Profundidad de búsqueda |
|---|---|
| 7 o más | 2 jugadas por delante |
| De 4 a 6 | 3 jugadas por delante |
| 3 o menos | 4 jugadas por delante |
Es el mismo instinto que tiene un buen jugador humano — echar un vistazo rápido a un tablero abierto y frenar en seco cuando se pone difícil — solo que aplicado con precisión, y mantiene la pista por debajo de un retardo cómodo entre el clic y la flecha en cualquier fase de la partida.
En 500 partidas completas llegó a 2048 en el 91,4 %, con una puntuación mediana de 37.004 y una duración mediana de 1943 jugadas. Los resultados completos, con sus referencias ponen esas cifras en contexto.
No es un bot de 2048 de última generación, y conviene dejarlo claro. Los solucionadores publicados llegan a 32768 buscando mucho más hondo con representaciones en bitboard, tablas de jugadas precalculadas y cachés de transposición. Este funciona con un array normal en el hilo principal del navegador, no guarda caché entre jugadas y está limitado a cuatro niveles para que la página nunca se trabe. Está hecho para responder a «¿qué hago aquí?» lo bastante rápido como para parecer instantáneo, no para batir récords.
La forma más útil de usar Pista no es hacerle caso. Decide primero tu propia jugada y luego púlsalo. Cuando la flecha coincide, no has aprendido nada que no supieras — pero cuando no coincide, has encontrado un tablero que estás leyendo mal, y ahí es donde de verdad se mejora.
Automático sirve más como demostración que como rescate. Ponlo en marcha desde una posición que te haya costado y fíjate en qué dirección protege y qué fusiones se niega a hacer. Pulsar una flecha en cualquier momento te devuelve el control al instante.
El solucionador son unas 250 líneas de JavaScript sin dependencias, servidas como un archivo normal en /js/ai.js — puedes leerlo con «ver código fuente» en tu navegador si quieres comprobar algo de todo esto.
¿Listo para ponerlo en práctica?
Jugar al 2048