Cada puzzle de Griductive hace una promesa audaz: nunca necesitaras adivinar. Cada celda puede determinarse solo a traves de la logica, y cada puzzle tiene exactamente una respuesta correcta.
Eso no es un objetivo de diseno, es una garantia matematica, aplicada por la misma clase de solucionador utilizado en investigacion de operaciones y verificacion de chips. Este articulo explica como.
Por que importa la unicidad
Si un puzzle tiene dos soluciones validas, debe existir al menos una celda donde tanto Sospechoso como Inocente satisfagan todas las pistas. En esa celda, ningun razonamiento puede decirte cual es correcto: tendrias que adivinar. Adivinar viola el contrato fundamental de un puzzle de deduccion.
Asi que el generador no solo produce puzzles que casualmente tienen una solucion. Demuestra que no existe una segunda solucion antes de que un puzzle sea publicado.
El pipeline de cinco fases
Cada puzzle de Griductive se construye a traves de un pipeline de cinco fases. Esto es lo que sucede en cada etapa.
Fase 1: Generar una solucion aleatoria
El generador comienza creando una cuadricula de solucion valida: una asignacion aleatoria de Sospechoso e Inocente a cada celda. Esta es la verdad fundamental que el jugador eventualmente deducira.
En este punto, no existen pistas aun. El tablero es simplemente una configuracion aleatoria que satisface las restricciones estructurales basicas (dimensiones de la cuadricula, cantidad de sospechosos dentro de rangos validos).
Fase 2: Construir el conjunto de pistas
A continuacion, el generador enumera exhaustivamente cada posible pista que es verdadera en el tablero de solucion.
Griductive tiene mas de 26 tipos distintos de pistas: conteo, comparacion, espaciales, existenciales, unicidad, conectividad y mas. Para cada tipo, el generador prueba cada parametrizacion valida contra el tablero. Una cuadricula de 4x4 puede producir miles de pistas candidatas. Solo se conservan las pistas que evaluan como verdaderas en la solucion.
Este es el material en bruto con el que trabaja el generador: un conjunto masivo de declaraciones verdaderas, la mayoria de las cuales son redundantes.
Fase 3: Seleccionar un conjunto minimo de pistas (la parte dificil)
Aqui es donde ocurre el trabajo real. El generador necesita elegir un pequeno subconjunto de pistas del conjunto de modo que:
- Las pistas sean suficientes — juntas, restringen el espacio de soluciones a exactamente un tablero valido.
- Ninguna pista sea redundante — eliminar cualquier pista individual permitiria multiples soluciones.
El generador usa un enfoque de satisfaccion de restricciones voraz:
- Comenzar sin pistas seleccionadas. El espacio de soluciones esta completamente abierto: muchos tableros podrian ser validos.
- Puntuar cada pista candidata segun cuanto reduce el espacio de soluciones. Una pista que elimina el 80% de las posibilidades restantes puntua mas alto que una que elimina el 10%.
- Seleccionar la pista con mayor puntuacion y agregarla al conjunto.
- Resolver nuevamente el modelo de restricciones con el conjunto de pistas actualizado.
- Repetir hasta que el solucionador confirme que solo queda una solucion.
- Podar: recorrer el conjunto final y eliminar cualquier pista que no sea necesaria para la unicidad. Esto mantiene el puzzle limpio y evita dar al jugador informacion gratuita.
El resultado es un conjunto de pistas ajustado y justo: suficiente para resolver el puzzle completamente, sin pistas desperdiciadas.
Fase 4: Puntuar la dificultad
Con el conjunto de pistas definido, el generador puntua la dificultad del puzzle en una escala de 0 a 100. Cuatro factores contribuyen:
- Proporcion de pistas simples (35%) — Cuantas pistas son declaraciones directas de conteo o identidad. Mas pistas simples significa un puzzle mas facil.
- Proporcion de pistas complejas (30%) — Cuantas pistas requieren razonamiento de multiples pasos o espacial. Estas exigen cadenas de deduccion mas profundas.
- Escasez de informacion (20%) — Cuan pocas pistas se dan en relacion al tamano de la cuadricula. Menos pistas significa menos con lo que trabajar.
- Escala de la cuadricula (15%) — Las cuadriculas mas grandes son inherentemente mas dificiles de seguir. Un puzzle de 5x5 tiene casi tres veces las celdas de uno de 3x3.
Cada tipo de pista tambien tiene una calificacion de complejidad intrinseca basada en el razonamiento que demanda. Una pista como "Julia es sospechosa" es tan simple como se puede ser. Una pista como "Julia es la unica persona en la fila 3 con exactamente 1 vecino sospechoso" requiere cruzar referencias de multiples celdas y se puntua mucho mas alto.
Fase 5: Generar pistas de ayuda y formatear la salida
Finalmente, el generador construye la secuencia de pistas de ayuda: un orden de resolucion recomendado que guia a los jugadores atascados a traves del puzzle un paso logico a la vez. Las pistas de ayuda se ordenan por profundidad de dependencia: las celdas que pueden deducirse inmediatamente vienen primero, y las celdas que requieren largas cadenas de deducciones previas vienen al final.
El puzzle final se empaqueta con todos los datos que el juego necesita: metadatos, conjunto de pistas, secuencia de ayuda y puntuacion de dificultad.
El solucionador: como se demuestra la unicidad
En el corazon del pipeline esta Google OR-Tools CP-SAT, un solucionador de programacion de restricciones que combina propagacion de restricciones, programacion entera y resolucion SAT.
Como un puzzle se convierte en un problema matematico
Cada celda de la cuadricula se modela como una variable booleana: Sospechoso (1) o Inocente (0). Cada pista se convierte en una o mas restricciones matematicas sobre esas variables.
Por ejemplo:
- "Hay exactamente 2 sospechosos en la fila 3" se convierte en:
celda[3,0] + celda[3,1] + celda[3,2] + celda[3,3] = 2 - "Todos los sospechosos en la columna A estan conectados" se convierte en: una restriccion de conectividad que asegura que las celdas de sospechosos en la columna A formen una cadena contigua sin espacios.
- "La fila 1 tiene mas sospechosos que la columna B" se convierte en:
suma(fila_1) > suma(col_B)
Como se verifica la unicidad
Despues de ensamblar el conjunto de pistas, el generador le hace a CP-SAT una pregunta precisa: "Dadas estas restricciones, existe mas de una asignacion valida?"
CP-SAT no solo encuentra una solucion: puede enumerar todas las soluciones. Si el solucionador encuentra exactamente una, el puzzle es valido. Si encuentra dos o mas, el generador vuelve a la Fase 3 y agrega otra pista.
Esta es una demostracion formal, no una heuristica. CP-SAT explora exhaustivamente todo el espacio de soluciones. Si dice que hay una solucion, hay exactamente una, punto.
Por que no simplemente usar fuerza bruta?
Una cuadricula de 5x5 tiene 25 celdas, cada una con 2 valores posibles. Eso es 2 elevado a 25 = 33 millones de tableros posibles. Probar todos por fuerza bruta es lento y no escala.
CP-SAT es dramaticamente mas rapido gracias a la propagacion de restricciones: cuando una pista dice "la fila 3 tiene exactamente 2 sospechosos", el solucionador reduce inmediatamente el espacio de busqueda para cada celda en la fila 3 sin verificar cada combinacion individualmente. Las pistas complejas componen este efecto. En la practica, CP-SAT demuestra la unicidad de un puzzle de 5x5 en milisegundos.
Que podria salir mal (y como lo prevenimos)
"Que pasa si una pista es ambigua?"
Cada tipo de pista tiene una definicion matematica formal. "Vecinos" siempre significa las hasta 8 celdas circundantes incluyendo las diagonales. "Conectado" siempre significa una cadena contigua de celdas adyacentes. "Entre" siempre significa celdas en la misma fila o columna, excluyendo los extremos.
Estas definiciones se incorporan directamente en el modelo de restricciones: no hay un paso de interpretacion de lenguaje natural donde la ambiguedad pueda infiltrarse. La referencia de Detalles Aclaratorios en el juego muestra a los jugadores exactamente lo que significa cada palabra clave espacial.
"Que pasa si el solucionador tiene un error?"
El solucionador CP-SAT es una herramienta bien probada y ampliamente utilizada, mantenida por el equipo de optimizacion de Google. Pero no confiamos solo en la confianza. Cada puzzle generado se verifica independientemente:
- Un solucionador automatizado intenta resolver cada puzzle paso a paso, simulando a un jugador humano. Si no puede alcanzar una solucion completa solo a traves de deduccion logica, el puzzle se rechaza.
- Las verificaciones de solidez de pistas de ayuda confirman que cada pista de ayuda en la secuencia es logicamente valida: que la celda sugerida es genuinamente deducible a partir de las pistas y las celdas reveladas previamente, no de informacion oculta.
"Que pasa si la generacion de pistas omite casos extremos?"
Cada tipo de pista tiene una funcion de evaluacion formal que se prueba contra configuraciones de puzzles conocidas. La fase de generacion del conjunto de pistas solo incluye pistas que evaluan como verdaderas en la solucion real: una pista que es falsa en la solucion nunca puede aparecer en el puzzle.
El resultado
Cuando abres un puzzle de Griductive, esto es lo que ya ha sucedido:
- Se genero una solucion aleatoria.
- Miles de pistas candidatas fueron evaluadas contra ella.
- Se selecciono un subconjunto minimo y no redundante.
- Un solucionador formal demostro que exactamente una solucion satisface esas pistas.
- Un solucionador automatizado verifico independientemente que el puzzle es resoluble a traves de deduccion pura.
- Se calculo una puntuacion de dificultad y se genero una secuencia de ayuda.
Cada puzzle, cada dia, en los cuatro tamanos de cuadricula. Sin excepciones.
La promesa se mantiene: si estas atascado, hay una pista que aun no has utilizado completamente. Si crees que dos respuestas son posibles, relee las pistas: la logica lo resolvera. Y si quieres prueba, el Grafico Logico te mostrara la cadena exacta de deduccion desde las pistas hasta la solucion.
Lo que viene: pistas que cuentan una historia
Ahora mismo, las pistas de Griductive se leen como declaraciones logicas precisas: claras e inequivocas, pero ciertamente un poco clinicas. "Hay exactamente 2 sospechosos en la fila 3" cumple su funcion, pero no exactamente te hace sentir como un detective en un caso.
Estamos trabajando activamente en cambiar eso. El objetivo es diversificar como se expresan las pistas, entretejiendo sabor tematico mientras se preserva la misma precision logica subyacente. Imagina pistas vinculadas a eventos festivos, o enmarcadas como testimonios de testigos de una escena del crimen especifica. En lugar de una formula esteril, leerias algo que se siente como una pieza real de evidencia de una investigacion.
La restriccion clave no ha cambiado: cada pista debe permanecer consistente, inequivoca y formalmente verificable. Al solucionador no le importa si una pista suena como un libro de texto de matematicas o una novela de detectives noir: solo le importa el contenido logico. Esa separacion es lo que hace posible una expresion mas rica sin comprometer la correccion.
Las mismas garantias. El mismo rigor. Pero puzzles que se sienten menos como ecuaciones y mas como casos que vale la pena resolver.
Sin adivinanzas. Sin suerte. Garantizado matematicamente.