@logic-pad/core
Version:
75 lines (74 loc) • 3.13 kB
JavaScript
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;