Un solucionador de puzzle deslizante es un programa que, dada cualquier posición inicial resoluble, devuelve una secuencia de movimientos que lleva al objetivo. Es una herramienta con dos públicos: jugadores atascados y desarrolladores que tienen que sacar adelante una app de puzzle deslizante.
Los dos públicos quieren cosas muy distintas.
Por qué los jugadores casi nunca lo necesitan
Si estás atascado en un puzzle deslizante, la solución honesta no suele ser «ejecuta un solucionador». Es una de tres:
- Aprender el método fila-y-columna. La mayoría de quienes abandonan son quienes no aprendieron la estrategia canónica. (Empieza con el 8-puzzle, después sube.)
- Verificar que el puzzle tiene solución. Si no encuentras solución hagas lo que hagas, la app puede haber generado un tablero irresoluble por error. Fácil de comprobar.
- Usar una pista, no la solución completa. El siguiente único movimiento basta normalmente para desatascarte. Las apps que ofrecen pistas (la nuestra lo hace en Premium) suelen calcular un movimiento bajo demanda, no la solución entera.
Una solución completa pocas veces enseña algo útil, porque el solucionador produce una secuencia óptima — típicamente 52 movimientos para un 15-puzzle difícil — y ver 52 movimientos óptimos pasar volando en el móvil no construye intuición.
La pista es la unidad correcta. Si necesitas una pista, no necesitas un solucionador.
Por qué los desarrolladores siempre lo necesitan
Construir una app de puzzle deslizante implica comprometerse con varias promesas:
- Todo puzzle tiene solución.
- Todo puzzle requiere aproximadamente un número dado de movimientos (calibración de dificultad).
- Todo puzzle puede dar una pista a demanda.
Ninguna es honesta sin un solucionador funcionando en segundo plano.
Generación «resoluble por construcción» evita ejecutar un solucionador en la generación: camina hacia atrás desde el objetivo aplicando movimientos válidos al azar, y garantizas una posición inicial con solución. La mayoría de apps, la nuestra incluida, hacen exactamente esto.
Calibración de dificultad quiere que el puzzle sea «interesante» — ni trivial (un tablero casi resuelto) ni agotador (uno que necesite 60 movimientos en un 3×3). El truco estándar es aplicar movimientos hacia atrás suficientes para acabar cerca de la distancia óptima al objetivo — típicamente 20–30 para 3×3, 40–60 para 4×4. El solucionador verifica la distancia tras la generación.
Pistas requieren un solucionador que produzca un buen siguiente movimiento en unos cientos de milisegundos. Más rápido que la solución completa pero exige trabajo algorítmico de verdad.
Qué solucionador
La elección depende del tamaño del tablero:
| Tablero | Algoritmo recomendado | Tiempo por solución |
|---|---|---|
| 3×3 | A* + Manhattan | < 1 ms |
| 4×4 | IDA* + walking distance | 10 ms – 1 s |
| 5×5 | IDA* + base 5+5+5+9 | 100 ms – minutos |
| 6×6 | IDA* + base más grande | segundos – horas |
Para 3×3 hasta BFS por fuerza bruta funciona. En 4×4 necesitas una heurística real, y la distancia de Manhattan ha sido el estándar desde los 80. En 5×5 necesitas bases de patrones. En 6×6 estás haciendo investigación.
Cubrimos los detalles algorítmicos en la guía del solucionador del 15-puzzle y la guía del solucionador del 8-puzzle. Para comparativa, ver solucionador de deslizante.
En el dispositivo vs en el servidor
Las apps móviles con solucionador integrado tienen dos opciones: ejecutarlo en el dispositivo o llamar a un servidor.
En el dispositivo es la elección más honesta para una app respetuosa con la privacidad. El solucionador son unos cientos de líneas, las bases de patrones para 4×4 caben en pocos megabytes y un móvil moderno resuelve cualquier 15-puzzle en mucho menos de un segundo. No hay razón para enviar un estado de puzzle a un servidor — y no enviarlo es una de las cosas que distingue un juego tranquilo de uno que necesita telemetría para funcionar.
En el servidor es lo que usa quien quiere registrar en qué puzzles se atasca la gente, o hacer A/B-tests de curvas de dificultad. Son razones de producto válidas, pero vienen con un coste de privacidad y dependencia de red. Las apps que no resuelven sin conexión no funcionan en un avión.
Slide Puzzle resuelve enteramente en el dispositivo. La base de patrones del 4×4 ocupa unos 6 MB y vive en el bundle de la app. El botón de pista la usa directamente. Del móvil no sale ninguna petición.
Nota pragmática
Si has venido buscando «un sitio donde pego mi tablero y me dice la respuesta» — los hay, y suelen ser solucionadores web de 8-puzzle. Para 3×3 valen. Para 4×4 y arriba, la experiencia es incómoda: escribir 16 números, ver una secuencia de 50 movimientos, intentar reproducir 50 movimientos en un tablero físico. Nadie disfruta de eso.
Los usos realistas de un solucionador de puzzle deslizante son:
- Verificar tu propia implementación en código.
- Generar un corpus de tableros de prueba.
- Dentro de una app, calcular una pista.
Fuera de eso, aprender el método fila-y-columna es más rápido.