UNPKG

@logic-pad/core

Version:
55 lines (54 loc) 2.7 kB
import { instance as banPatternInstance } from '../../rules/banPatternRule.js'; import { instance as cellCountInstance } from '../../rules/cellCountRule.js'; import { instance as regionAreaInstance } from '../../rules/regionAreaRule.js'; import { instance as sameShapeInstance } from '../../rules/sameShapeRule.js'; import { instance as symbolsPerRegionInstance } from '../../rules/symbolsPerRegionRule.js'; import { instance as undercluedInstance } from '../../rules/undercluedRule.js'; import { instance as uniqueShapeInstance } from '../../rules/uniqueShapeRule.js'; import { instance as areaNumberInstance } from '../../symbols/areaNumberSymbol.js'; import { instance as dartInstance } from '../../symbols/dartSymbol.js'; import { instance as galaxyInstance } from '../../symbols/galaxySymbol.js'; import { instance as letterInstance } from '../../symbols/letterSymbol.js'; import { instance as lotusInstance } from '../../symbols/lotusSymbol.js'; import { instance as minesweeperInstance } from '../../symbols/minesweeperSymbol.js'; import { instance as focusInstance } from '../../symbols/focusSymbol.js'; import { instance as myopiaInstance } from '../../symbols/myopiaSymbol.js'; import { instance as viewpointInstance } from '../../symbols/viewpointSymbol.js'; import { instance as connectAllInstance } from '../../rules/connectAllRule.js'; import { instance as unsupportedInstance } from '../../symbols/unsupportedSymbol.js'; import EventIteratingSolver from '../eventIteratingSolver.js'; // eslint-disable-next-line @typescript-eslint/no-unused-expressions ('vite-apply-code-mod'); export default class BacktrackSolver extends EventIteratingSolver { static supportedInstrs = [ areaNumberInstance.id, viewpointInstance.id, dartInstance.id, galaxyInstance.id, lotusInstance.id, myopiaInstance.id, minesweeperInstance.id, focusInstance.id, letterInstance.id, undercluedInstance.id, connectAllInstance.id, banPatternInstance.id, regionAreaInstance.id, symbolsPerRegionInstance.id, cellCountInstance.id, sameShapeInstance.id, uniqueShapeInstance.id, unsupportedInstance.id, ]; id = 'backtrack'; author = 'ALaggyDev'; description = 'Solves puzzles pretty fast using backtracking with optimizations. Support most rules and symbols (including underclued).'; createWorker() { return new Worker(new URL(`./backtrackWorker.js`, import.meta.url), { type: 'module', }); } isInstructionSupported(_grid, instruction) { return BacktrackSolver.supportedInstrs.includes(instruction.id); } }