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.
38 lines (30 loc) • 1.13 kB
text/typescript
import { BONUS_WORD } from '@scrabble-solver/constants';
import { type Bonus } from '@scrabble-solver/types';
import { COLOR_BONUS_CHARACTER, COLOR_BONUS_CHARACTER_MULTIPLIER, COLOR_BONUS_WORD } from 'parameters';
import { type Point } from 'types';
export const createGrid = <T>(width: number, height: number, getInitialValue: (x: number, y: number) => T): T[][] => {
return Array.from({ length: height }).map((_row, y) => {
return Array.from({ length: width }).map((_cell, x) => {
return getInitialValue(x, y);
});
});
};
export const getBonusColor = (bonus: Bonus): string => {
if (bonus.type === BONUS_WORD) {
return COLOR_BONUS_WORD[bonus.multiplier];
}
if (bonus.score) {
return COLOR_BONUS_CHARACTER[bonus.score];
}
return COLOR_BONUS_CHARACTER_MULTIPLIER[bonus.multiplier];
};
export const getPositionInGrid = <T>(grid: T[][], constraint: (value: T) => boolean): Point | undefined => {
for (let y = 0; y < grid.length; ++y) {
for (let x = 0; x < grid[0].length; ++x) {
if (constraint(grid[y][x])) {
return { x, y };
}
}
}
return undefined;
};