Cómo se juega
El tablero contiene números entre 0 y N. Debes dividir todas las casillas en fichas de dominó de dos celdas ortogonalmente adyacentes. Ninguna casilla puede pertenecer a dos fichas y ninguna puede quedarse fuera.
La segunda regla es global: cada pareja no ordenada debe aparecer exactamente una vez. 2–5 y 5–2 son la misma ficha. En un conjunto 0–6 hay 28 tipos distintos, desde 0–0 hasta 6–6, así que un tablero completo contiene exactamente 28 dominós y 56 casillas.
Una historia mucho más antigua de lo que parece
Dominosa suele atribuirse a O. S. Adler. Fuentes históricas especializadas sitúan una versión del juego en 1874; Adler la patentó posteriormente en Alemania bajo el seudónimo Richard Osa. El nombre “Dominosa” combina la referencia al dominó con sus iniciales.
La formulación moderna conserva la misma idea central: las fichas originales se retiran y solo quedan visibles los números de sus dos mitades. El jugador debe reconstruir exactamente cómo estaban colocadas.
Los tamaños salen de las matemáticas
En este juego no necesitamos inventar cuatro dimensiones arbitrarias. Un conjunto de dominós con valores entre 0 y N contiene (N+1)(N+2)/2 parejas distintas. Al multiplicar por dos casillas obtenemos exactamente (N+1)(N+2) posiciones.
Por eso PuzzleHub utiliza 4×5 para 0–3, 5×6 para 0–4, 6×7 para 0–5 y 7×8 para 0–6. Cada rectángulo tiene justo el área necesaria para alojar el conjunto completo una sola vez.
Cómo generamos bases originales
Primero generamos un recubrimiento aleatorio del rectángulo con dominós. Después barajamos la lista completa de parejas 0–0…N–N y asignamos exactamente una pareja a cada ficha del recubrimiento. Por último elegimos aleatoriamente qué extremo recibe cada valor.
Al borrar las fronteras de ese recubrimiento obtenemos el puzzle visible: una matriz de números. Sabemos que tiene al menos una solución —la colocación utilizada al fabricarlo—, pero eso no demuestra que sea única.
El solver es un matching con inventario global
Cada casilla puede emparejarse con cualquiera de sus vecinas ortogonales. Cada posible arista consume dos recursos: las dos celdas y el tipo de dominó determinado por sus números.
El solver mantiene qué celdas están ya cubiertas y qué parejas numéricas han sido usadas. En cada paso elige la celda libre con menos vecinos todavía compatibles. Si una celda se queda sin ninguna arista disponible, la rama se descarta inmediatamente.
Cuando todas las celdas están cubiertas, el número de dominós seleccionados coincide exactamente con el número de tipos posibles. Como no hemos permitido repetir ninguna pareja, el inventario completo se ha usado una vez.
Solución única antes de entrar en el catálogo
El contador se detiene al encontrar dos soluciones. Los tableros ambiguos no se publican, aunque procedan de un recubrimiento perfectamente válido. Para cada tamaño generamos muchas candidatas y conservamos únicamente bases cuya solución es única.
Además registramos el número de nodos explorados por el solver. Esa métrica nos permite escoger cuatro bases dentro de cada tamaño con una progresión clara de trabajo computacional.
Cuatro dificultades
Fácil, Normal, Difícil y Experto utilizan tableros distintos, no el mismo tablero con una etiqueta diferente. Dentro de cada tamaño, la base seleccionada exige estrictamente más nodos de búsqueda que la anterior. Por ejemplo, en 7×8 las cuatro bases pasan aproximadamente de 70 a 133, 198 y 307 nodos en nuestro solver de referencia.
Los nodos no son una medida perfecta de dificultad humana, pero funcionan como guardarraíl reproducible y evitan que una base supuestamente experta sea accidentalmente más directa que una normal.
Variantes instantáneas
En cada nueva partida podemos reflejar el tablero horizontalmente, verticalmente o en ambos ejes. También podemos aplicar una permutación completa de las etiquetas 0…N. Una permutación transforma el conjunto de todas las parejas no ordenadas en sí mismo: sigue habiendo exactamente una de cada tipo.
Estas transformaciones son biyectivas, así que preservan unicidad. Aun así el selfTest() vuelve a ejecutar el solver sobre las variantes seleccionadas.
Una interfaz basada en relaciones, no en entrada numérica
Los números son inmutables. El jugador selecciona dos casillas vecinas para formar una ficha. Una segunda pulsación sobre una casilla ya emparejada elimina esa ficha y permite reconsiderarla.
El tablero marca visualmente las uniones y detecta si el mismo tipo de pareja se está utilizando más de una vez. De esta forma el feedback refleja la regla central de Dominosa en lugar de esperar únicamente al botón “Comprobar”.
Qué verifica CI
El test recorre los cuatro conjuntos y las cuatro dificultades, cuenta soluciones hasta dos y exige exactamente una. También verifica que el coste del solver aumente entre niveles y repite la comprobación tras distintas simetrías y permutaciones de etiquetas.
Así, una futura modificación del matching, de las claves de pareja o de la transformación de valores no puede introducir silenciosamente un tablero ambiguo.
Fuentes y referencias
Para las reglas modernas hemos contrastado Dominosa — FAQ y la documentación de Simon Tatham's Portable Puzzle Collection. Sobre la historia de O. S. Adler y las primeras publicaciones, véase también Puzzle Laboratory — Domino Logic Puzzles.