Cada puzzle en Word Puzzle Hub se genera completamente en codigo: no hay dibujo manual de cuadriculas. Pero "generado en codigo" puede significar cualquier cosa, desde una IA sofisticada hasta un simple volcado de letras aleatorias. Este articulo explica exactamente como funcionan nuestros puzzles, por que se tomaron ciertas decisiones de diseno y que garantias puedes esperar cuando te sientas a resolver uno.
Curacion de listas de palabras
El punto de partida para cada puzzle es una lista de palabras seleccionada manualmente. Para cada tema, ya sea Aves, Espacio, Mitologia o Terminos Musicales, hemos compilado una lista de 20 o mas palabras relevantes, filtradas para cumplir dos restricciones:
- Longitud: las palabras deben tener entre 4 y 12 caracteres. Las palabras mas cortas son demasiado faciles de encontrar por accidente; las mas largas corren el riesgo de dominar la cuadricula.
- Adecuacion: sin nombres propios, sin terminos ofensivos, sin jerga oscura. Cada palabra en cada lista debe ser reconocible para un adulto educado o un nino mayor.
Para el puzzle diario, el sistema selecciona de 10 a 12 palabras de la lista del tema para cada puzzle. La seleccion es aleatoria pero reproducible: la misma fecha siempre produce las mismas palabras en las mismas posiciones.
Generacion de la cuadricula: primero las palabras, luego el relleno
La cuadricula del puzzle se construye en dos etapas.
Etapa 1: Colocacion de palabras. Cada palabra se coloca una a la vez. El algoritmo elige una celda inicial y una direccion aleatorias, verifica que la palabra cabe dentro del limite de la cuadricula y no entra en conflicto con las letras ya colocadas (a menos que el conflicto sea un cruce legitimo: dos palabras comparten una letra en la misma posicion), y la coloca. Si la colocacion falla despues de un numero fijo de intentos, el algoritmo mezcla y vuelve a intentarlo. Esto garantiza que cada cuadricula generada sea resoluble y que ninguna palabra falte nunca.
Etapa 2: Relleno. Una vez que todas las palabras estan colocadas, las celdas vacias restantes se rellenan con letras aleatorias. Esto evita que el relleno sea obviamente no similar a palabras (demasiadas Xs y Qs) mientras sigue siendo lo suficientemente aleatorio como para no deletrear palabras adicionales accidentalmente.
Reproducibilidad: como funciona la inicializacion
Un objetivo de diseno clave era la reproducibilidad: el mismo puzzle cada vez para la misma fecha o categoria. Esto es importante para la equidad (todos los que resuelven el puzzle diario enfrentan el mismo desafio) y para el SEO (las paginas de puzzles de categorias siempre renderizan contenido identico, que los motores de busqueda pueden indexar de manera confiable).
Lo logramos a traves de un generador de numeros pseudoaleatorios con semilla (especificamente una variante del algoritmo Mulberry32). Para los puzzles diarios, la semilla se deriva de la cadena de fecha. Para los puzzles de categoria, la semilla se deriva de un hash de la ruta de categoria (por ejemplo, animales/aves). La misma semilla siempre produce la misma secuencia de numeros aleatorios, lo que significa las mismas posiciones de palabras y las mismas letras de relleno, cada vez, en cada dispositivo.
Dificultad: ocho direcciones
Los tres niveles de dificultad cambian cuales de las ocho posibles direcciones de palabras se usan durante la colocacion:
| Dificultad | Direcciones disponibles |
|---|---|
| Facil | Izquierda-derecha, arriba-abajo |
| Medio | Izquierda-derecha, arriba-abajo y las cuatro diagonales |
| Dificil | Las ocho direcciones, incluyendo derecha-izquierda y abajo-arriba (al reves) |
Cuando cambias la dificultad, la misma semilla genera una nueva cuadricula con las mismas palabras pero con posiciones diferentes.
Traducciones al espanol
Para los usuarios de habla hispana, cada palabra se busca en una tabla de traduccion antes de generar el puzzle. Cuando existe una traduccion, se usa la palabra en espanol en lugar de la inglesa. La cuadricula se genera a partir de la lista de palabras traducidas usando la misma semilla, por lo que el puzzle en espanol es estructuralmente diferente del ingles pero igualmente reproducible.
Lo que garantizamos
- Cada puzzle es resoluble. Ninguna palabra se coloca incorrectamente ni falta en la cuadricula.
- La misma fecha/categoria siempre da el mismo puzzle. No hay sorpresas si vuelves a un puzzle que empezaste ayer.
- La dificultad es genuina. Cambiar el nivel de dificultad cambia la cuadricula, no solo una etiqueta.
¿Curioso sobre como el algoritmo maneja la busqueda A para resolver en lugar de generar? Lee Resolviendo sopas de letras programaticamente.*