Saltearse al contenido

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

ParametroTipoDescripcion
words{ word, clue }[]Palabras con pistas
gridSizenumberDimension del grid (gridSize x gridSize)
allowDiagonalbooleanPermite palabras en diagonal
allowReversebooleanPermite palabras en direccion inversa

Direcciones

VectorDescripcionDisponible
[0, 1]Horizontal derechaSiempre
[1, 0]Vertical abajoSiempre
[1, 1]Diagonal abajo-derechaallowDiagonal: true
[1, -1]Diagonal abajo-izquierdaallowDiagonal: true
[0, -1]Horizontal izquierdaallowReverse: true
[-1, 0]Vertical arribaallowReverse: true
[-1, -1]Diagonal arriba-izquierdaAmbos true
[-1, 1]Diagonal arriba-derechaAmbos true

Algoritmo

  1. Ordena palabras de mayor a menor longitud.
  2. Para cada palabra, intenta hasta 100 posiciones aleatorias.
  3. Coloca si no hay conflicto (celda vacia o misma letra).
  4. Rellena celdas vacias con letras aleatorias A-Z.
  5. Devuelve grid y metadata de palabras colocadas.

Palabras que no caben en el grid se omiten sin generar error.