@scrabble-solver/solver
Version:
Scrabble Solver 2 - Solver
29 lines (24 loc) • 1.17 kB
text/typescript
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';
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;
};
export default solve;