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.

27 lines (23 loc) 1.17 kB
import { Trie } from '@kamilmielnik/trie'; import { Board, Config, ResultJson, Tile } from '@scrabble-solver/types'; import { areDigraphsValid } from './areDigraphsValid'; import { fillPattern } from './fillPattern'; import { generatePatterns } from './generatePatterns'; import { getPatternScore } from './getPatternScore'; import { getUniquePatterns } from './getUniquePatterns'; export const solve = (trie: Trie, config: Config, board: Board, tiles: Tile[]): ResultJson[] => { const patterns = generatePatterns(config, board); const filledPatterns = patterns.flatMap((pattern) => fillPattern(trie, config, pattern, tiles)); const validPatterns = config.twoCharacterTiles.length > 0 ? filledPatterns.filter((pattern) => areDigraphsValid(config, pattern)) : filledPatterns; const uniquePatterns = getUniquePatterns(validPatterns); const results = uniquePatterns.map((pattern, index) => ({ cells: pattern.cells.map((cell) => cell.toJson()), collisions: pattern.getCollisions().map((collision) => collision.cells.map((cell) => cell.toJson())), id: index, points: getPatternScore(config, pattern), })); return results; };