Word Search Generator
Genera grids de sopa de letras dinamicamente. La BD guarda solo palabras y pistas; el motor construye el grid.
Uso
const result = engine.generateWordSearch( [ { word: 'APPLE', clue: { type: 'TEXT', value: 'A red fruit' } }, { word: 'DOG', clue: { type: 'IMAGE', value: 'https://cdn/dog.webp' } }, ], 12, // gridSize true, // allowDiagonal false, // allowReverse);Respuesta
{ "grid": [ ["A", "P", "P", "L", "E", "X", "K", "M", "R", "T", "W", "Z"], ["B", "Q", "D", "O", "G", "U", "V", "W", "X", "Y", "Z", "A"] ], "placedWords": [ { "word": "APPLE", "clue": { "type": "TEXT", "value": "A red fruit" }, "startRow": 0, "startCol": 0, "direction": [0, 1] } ], "size": 12}Parametros
| Parametro | Tipo | Descripcion |
|---|---|---|
words | { word, clue }[] | Palabras con pistas |
gridSize | number | Dimension del grid (gridSize x gridSize) |
allowDiagonal | boolean | Permite palabras en diagonal |
allowReverse | boolean | Permite palabras en direccion inversa |
Direcciones
| Vector | Descripcion | Disponible |
|---|---|---|
[0, 1] | Horizontal derecha | Siempre |
[1, 0] | Vertical abajo | Siempre |
[1, 1] | Diagonal abajo-derecha | allowDiagonal: true |
[1, -1] | Diagonal abajo-izquierda | allowDiagonal: true |
[0, -1] | Horizontal izquierda | allowReverse: true |
[-1, 0] | Vertical arriba | allowReverse: true |
[-1, -1] | Diagonal arriba-izquierda | Ambos true |
[-1, 1] | Diagonal arriba-derecha | Ambos true |
Algoritmo
- Ordena palabras de mayor a menor longitud.
- Para cada palabra, intenta hasta 100 posiciones aleatorias.
- Coloca si no hay conflicto (celda vacia o misma letra).
- Rellena celdas vacias con letras aleatorias A-Z.
- Devuelve grid y metadata de palabras colocadas.
Palabras que no caben en el grid se omiten sin generar error.