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
text/typescript
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;
});
};