Cómo se juega
El tablero está dividido en regiones. Cada pareja de regiones que comparte frontera debe quedar unida por exactamente un stitch: una pequeña costura entre dos casillas ortogonalmente adyacentes situadas a ambos lados de esa frontera.
Cada extremo de la costura es un agujero. Una casilla puede contener como máximo un agujero, así que dos stitches distintos nunca pueden compartir una misma celda. Los números exteriores indican el número exacto de agujeros que debe contener cada fila y cada columna.
La versión anterior era solo una maqueta
La primera implementación de PuzzleHub era un 4×4 fijo con cuatro franjas verticales. Permitía probar la idea básica, pero no generaba regiones interesantes, no tenía tamaños ni dificultades y ni siquiera podía entrar en nuestro sistema moderno de selfTest().
La revisión completa parte de cero y trata Stitches como un problema de restricciones real.
La variable correcta es una pareja de regiones
Si las regiones A y B se tocan en seis puntos distintos, la regla no pide decidir seis booleanos independientes. Pide escoger exactamente uno de esos seis bordes. Por eso el solver agrupa todas las fronteras por pareja de regiones.
Cada grupo se convierte en una variable cuyo dominio son las posiciones válidas del stitch. El backtracking elige primero el grupo con menos opciones todavía disponibles —una variante de MRV— y elimina cualquier candidato que reutilice una casilla o haga que una pista de fila o columna se pase de su valor.
Podar antes de adivinar
Además de impedir que una pista se exceda, el solver calcula si las fronteras todavía libres podrían aportar suficientes agujeros para alcanzar cada fila y cada columna. Si una línea necesita tres agujeros más pero las regiones pendientes solo podrían aportar dos, esa rama se descarta inmediatamente.
El contador se detiene en cuanto encuentra dos soluciones. Las bases publicadas solo se aceptan cuando encuentra exactamente una dentro del presupuesto de búsqueda.
Cuatro tamaños y cuatro dificultades
PuzzleHub ofrece 6×6, 8×8, 10×10 y 12×12. Son tamaños suficientemente distintos para cambiar la densidad de fronteras y el número de relaciones entre regiones sin convertir la interfaz móvil en una cuadrícula microscópica.
En cada tamaño hay Fácil, Normal, Difícil y Experto. La dificultad se seleccionó usando el trabajo real del solver como señal: las bases avanzadas necesitan explorar más estados para demostrar que la solución es única. Tamaño y dificultad siguen siendo independientes.
Variantes sin volver a generar durante la partida
Crear regiones, encontrar una costura completa y demostrar unicidad es un buen trabajo para desarrollo y CI, no para bloquear el navegador cada vez que el usuario pulsa “Nueva partida”. Por eso distribuimos bases originales ya verificadas y aplicamos las ocho simetrías del cuadrado.
Rotaciones, reflejos y transposiciones conservan las fronteras, el matching y la unicidad. Las pistas exteriores se transforman junto con el tablero. El selfTest() vuelve a resolver todas esas variantes desde cero para que la conservación no sea solo una suposición matemática.
La interfaz: hacer visible la costura
Los bordes gruesos muestran las regiones. Las posibles costuras viven directamente sobre las fronteras entre regiones: un clic coloca o retira un stitch. El clic derecho permite marcar una frontera como imposible, una anotación útil en tableros grandes.
Si dos stitches comparten agujero, si una misma pareja de regiones queda cosida dos veces o si una pista exterior se excede, la interfaz muestra el conflicto inmediatamente. Las pistas de columnas están arriba y las de filas a la izquierda para dejar libre el centro del tablero.
Qué verifica CI
El test recorre los cuatro tamaños y las cuatro dificultades. Exige que todas las regiones sean conexas, que la complejidad aumente de forma estricta dentro de cada tamaño y que el solver encuentre exactamente una solución.
Después repite la prueba sobre las ocho simetrías de cada base. Son 128 configuraciones verificadas antes de permitir que el cambio llegue a main.
Sobre las reglas y el origen
Las reglas modernas están bien documentadas por sitios especializados: una costura por pareja de regiones vecinas, extremos no compartidos y pistas de fila y columna. También existen variantes que exigen dos, tres o más stitches entre cada pareja de regiones.
No hemos encontrado una fuente primaria suficientemente sólida para atribuir con seguridad un inventor o una fecha de creación, así que preferimos no fabricar una genealogía. PuzzleHub implementa por ahora la variante clásica de un stitch por pareja; las variantes 2÷ y 3÷ quedan como una posible ampliación futura.
Fuentes y referencias
Para contrastar la formulación de las reglas usamos Puzzle Stitches, que documenta la conexión entre bloques vecinos, la prohibición de compartir agujeros y las pistas exteriores, y Logic Puzzles Online como referencia adicional de interacción y tamaños. No se han copiado tableros, textos ni datasets de terceros.