UNPKG

scrabble-solver

Version:

Scrabble Solver 2 - Free, open-source, cross-platform, multi-language analysis tool for Scrabble, Scrabble Duel, Super Scrabble, Letter League, Literaki, and Kelimelik. Quickly find the top-scoring words using the given board and tiles.

34 lines (27 loc) 857 B
import { Board, Cell, Config, Pattern } from '@scrabble-solver/types'; import { generateEndIndices } from './generateEndIndices'; import { generateStartIndices } from './generateStartIndices'; export const generatePattern = <P extends Pattern>({ board, cells, config, PatternModel, }: { board: Board; cells: Cell[]; config: Config; PatternModel: new (board: Board, cells: Cell[]) => P; }): P[] => { const startIndices = generateStartIndices(cells); return startIndices.flatMap((startIndex) => { const endIndices = generateEndIndices(cells, startIndex); const patterns: P[] = []; for (const endIndex of endIndices) { const pattern = new PatternModel(board, cells.slice(startIndex, endIndex + 1)); if (pattern.canBePlaced(config)) { patterns.push(pattern); } } return patterns; }); };