Infografía · PuzzleHub Journal

Reglas locales, un único bucle global

232
0–3 ladosgrado 0/2un bucle
Una lectura visual del sistema de restricciones que define este capítulo.
Jugar ahoraAbrir Slitherlink en PuzzleHub.

De ficha de catálogo a juego completo

Slitherlink ya figuraba en el catálogo de PuzzleHub, pero eso no significaba que estuviera terminado. La primera integración era una ficha que delegaba en un adaptador genérico. Servía para reservar el slug y documentar las reglas, no para ofrecer la experiencia que queremos para los juegos principales de la plataforma.

La reconstrucción parte de una decisión concreta: convertirlo en un motor nativo. Eso nos permite controlar el generador, la semilla, el historial de movimientos, las marcas de descarte, la validación en vivo y el modelo de dificultad. También evita que una futura sección de Juego del Día dependa de un tablero de ejemplo externo.

Las reglas son locales; el objetivo es global

La editorial japonesa Nikoli describe Slitherlink con tres ideas: conectar puntos adyacentes horizontal o verticalmente para formar un solo bucle, respetar el número de lados indicado por cada pista y no cruzar ni ramificar la línea. Es una formulación compacta, pero algorítmicamente mezcla restricciones de dos escalas distintas. Las pistas son locales; que exista exactamente un único circuito es una propiedad global del grafo completo.

En nuestro tablero cada segmento posible es una arista. Las intersecciones son vértices. Una celda conoce sus cuatro aristas y cada vértice conoce las aristas que llegan hasta él. Con esa representación, una pista «3» deja de ser un dibujo y se convierte en una ecuación: exactamente tres de las cuatro aristas de esa celda deben estar activas.

Los vértices aportan la segunda familia de reglas. En una solución válida su grado es cero o dos. Grado uno significa que la línea queda abierta; grado tres o cuatro crea una rama. Después queda la condición decisiva: todas las aristas activas tienen que pertenecer al mismo componente conectado y cerrar una única vuelta.

Fuente de reglasNikoli — Slitherlink. Nikoli presenta Slitherlink como uno de sus puzzles originales.

Generar primero una solución válida

El generador no empieza colocando números al azar. Primero crea una región conectada de celdas y toma su frontera como solución. La frontera de una región apropiada produce de manera natural una línea cerrada. Aun así hay que evitar dos problemas: agujeros interiores, que crearían un segundo bucle, y contactos diagonales estrechos capaces de producir vértices ambiguos.

El crecimiento se hace con una fuente pseudoaleatoria sembrada. La misma combinación de semilla, tamaño y dificultad genera el mismo reto. Esto es útil para depuración y enlaces reproducibles, pero está diseñado también pensando en el Juego del Día: una fecha puede convertirse en semilla y todos los jugadores reciben exactamente el mismo tablero.

Una vez fijado el bucle, calculamos automáticamente las pistas completas. Cada celda cuenta cuántos de sus cuatro bordes pertenecen a la solución y obtiene un número entre 0 y 3.

Quitar pistas sin perder la solución única

Un tablero lleno de números suele ser demasiado dirigido. La dificultad aparece cuando retiramos información, pero quitar pistas al azar no basta: podemos crear un puzzle con varias soluciones y no enterarnos. Por eso cada retirada candidata pasa por el solver.

El solver propaga dos tipos de restricciones. Para una celda con pista, si ya hay demasiadas líneas la rama es imposible; si las líneas existentes más las aristas aún desconocidas no alcanzan el número, también. Cuando el número ya está satisfecho, las restantes se descartan. Cuando todas las desconocidas son necesarias, se activan.

En los vértices aplicamos la regla de grado cero o dos. Dos líneas ya presentes obligan a descartar cualquier salida restante. Una línea acompañada de una única opción posible obliga a continuarla. Además, el solver detecta cuándo se ha cerrado un componente: si ese circuito no puede constituir la única solución global, esa rama se rechaza.

Cuando la propagación ya no decide nada, el solver ramifica sobre una arista aún desconocida y explora ambas posibilidades. Para generación no necesitamos enumerar todo el espacio: basta con encontrar dos soluciones para saber que una retirada de pista ha sido demasiado agresiva. Si solo aparece una dentro del presupuesto de búsqueda, la pista puede desaparecer.

Cuatro tamaños y cuatro dificultades son dos cosas diferentes

PuzzleHub separa tamaño y dificultad deliberadamente. Un tablero 11×11 no debería llamarse «experto» solo por ser grande, ni un 5×5 tendría que ser siempre trivial. En Slitherlink ofrecemos 5×5, 7×7, 9×9 y 11×11 como tamaños independientes.

La dificultad —Fácil, Medio, Difícil y Experto— controla principalmente cuánta información puede retirarse manteniendo una única solución. Los niveles altos intentan conservar menos pistas y por tanto exigen encadenar más deducciones. El generador tiene un presupuesto de búsqueda acotado; si una eliminación no puede demostrarse segura a tiempo, se conserva la pista en lugar de sacrificar corrección por apariencia.

Preferimos un tablero algo más informado que uno ambiguo. La dificultad nunca debe fabricarse a costa de dejar de saber si el puzzle tiene una sola respuesta.

Una interacción pensada para líneas, no para celdas

Slitherlink no encaja bien en el patrón habitual de botones cuadrados. La unidad interactiva es el espacio entre dos puntos. El tablero se representa en SVG para que cada arista tenga una zona de toque generosa sin hacer la línea visualmente gruesa en exceso.

Un toque recorre tres estados: desconocido, línea y ×. La × representa una deducción negativa y es fundamental en este tipo de puzzles. El clic secundario recorre los estados en sentido inverso. Cada arista también es accesible mediante teclado con Intro o Espacio, y el foco visual se mantiene separado de la respuesta.

La interfaz incluye deshacer, rehacer, limpiar, pista, reiniciar y nueva partida. Una pista no inventa un movimiento heurístico: revela el estado correcto de una arista de la solución generada.

Errores visibles sin convertirlo en ensayo y error

Mientras se juega marcamos contradicciones inequívocas. Una pista se resalta si ya tiene demasiadas líneas o si, contando los bordes todavía disponibles, ya no puede alcanzar su número. Un vértice se marca si recibe más de dos líneas o si queda en un estado imposible.

No convertimos cada desviación de la solución oculta en un error instantáneo, porque eso transformaría el puzzle en un juego guiado por el sistema. Solo mostramos inconsistencias deducibles a partir de las reglas visibles. La comprobación final verifica pistas, grados y conectividad del único bucle.

Preparado para el Juego del Día

La generación admite una semilla explícita en la URL junto con tamaño y dificultad. Esto hace que Slitherlink sea un candidato natural para los retos diarios de PuzzleHub: podemos derivar una semilla estable de la fecha, fijar una configuración y obtener el mismo reto para todos sin almacenar una colección cerrada de tableros.

La pieza que queda para la capa de producto es registrar la finalización dentro del sistema de rachas y presentar el resultado diario. El motor no necesita rehacerse para ello; ya nace determinista y reproducible.

Qué comprobamos automáticamente

El módulo exporta una prueba interna que el chequeo general del repositorio ejecuta junto al resto de motores nativos. Comprueba que una misma semilla produzca la misma solución, que la frontera generada forme un único componente cerrado, que todas las pistas estén entre 0 y 3 y que los tableros de reserva de los cuatro tamaños tengan una única solución demostrable.

No sustituye a las pruebas de interacción en navegador, pero sí protege los invariantes que más fácil sería romper al optimizar el generador o el solver.

El resultado

Slitherlink deja de ser una ficha pendiente y pasa a ser un juego completo de PuzzleHub: motor propio, cuatro tamaños, cuatro niveles, generación reproducible, comprobación de unicidad, historial de movimientos, marcas ×, ayudas, validación topológica y controles adaptados a móvil y escritorio.

Y, sobre todo, la arquitectura refleja la naturaleza del puzzle. No estamos dibujando una cuadrícula y comprobando después si se parece a una respuesta. Estamos trabajando con un grafo de aristas y vértices desde el principio, que es exactamente donde vive Slitherlink.

Juegos relacionados

Si te gusta razonar sobre bucles y conexiones, prueba Masyu, Shingoki, Balance Loop o Numberlink.

Siguiente partidaAbrir Slitherlink · Probar Masyu