scrabble-solver
Version:
Scrabble Solver 2 - Free, open-source, cross-platform, multi-language analysis tool for Scrabble, Scrabble Duel, Super Scrabble, Letter League, Crossplay, Literaki, and Kelimelik. Quickly find the top-scoring words using the given board and tiles.
24 lines (18 loc) • 791 B
text/typescript
import { type Config, isMultiplierBingo, isScoreBingo, type Pattern } from '@scrabble-solver/types';
import { getCellsScore } from './getCellsScore';
export const getPatternScore = (config: Config, pattern: Pattern) => {
const areAllTilesUsed = pattern.getEmptyCellsCount() === config.rackSize;
const baseScore = getCellsScore(config, pattern.cells);
const collisionsScore = pattern
.getCollisions()
.reduce((sum, collision) => sum + getCellsScore(config, collision.cells), 0);
if (areAllTilesUsed) {
if (isScoreBingo(config.bingo)) {
return baseScore + collisionsScore + config.bingo.score;
}
if (isMultiplierBingo(config.bingo)) {
return baseScore * config.bingo.multiplier + collisionsScore;
}
}
return baseScore + collisionsScore;
};