UNPKG

@logic-pad/core

Version:
75 lines (74 loc) 3.13 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 EventIteratingSolver from '../eventIteratingSolver.js'; class BacktrackSolver extends EventIteratingSolver { constructor() { super(...arguments); Object.defineProperty(this, "id", { enumerable: true, configurable: true, writable: true, value: 'backtrack' }); Object.defineProperty(this, "author", { enumerable: true, configurable: true, writable: true, value: 'ALaggyDev' }); Object.defineProperty(this, "description", { enumerable: true, configurable: true, writable: true, value: '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(instructionId) { return BacktrackSolver.supportedInstrs.includes(instructionId); } } Object.defineProperty(BacktrackSolver, "supportedInstrs", { enumerable: true, configurable: true, writable: true, value: [ 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, ] }); export default BacktrackSolver;