UNPKG

sudoku-solve

Version:

Konni's Sudoku solving library

49 lines (48 loc) 1.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Changes = exports.Change = void 0; const RemovedNumbers_1 = require("./RemovedNumbers"); class Changes { constructor(changes) { this.changes = changes.filter(change => !change.isNone); } concat(other) { return new Changes(this.changes.concat(other.changes)); } solvedNumbers() { return this.changes.filter(change => change.hasSolvedNumber()) .map(change => change.solvedNumber); } removedNumbers() { return this.changes.filter(change => change.hasRemovedNumbers()) .map(change => change.removedNumbers); } } exports.Changes = Changes; class Change { constructor(isNone, solvedNumber, removedNumbers) { this.isNone = isNone; this.solvedNumber = solvedNumber; this.removedNumbers = removedNumbers; } static none() { return new Change(true); } static solvedNumber(solvedNumber) { return new Change(false, solvedNumber); } static forRemovedNumbers(number, rule, before, after) { if (before.length > after.length) { const removedNumbers = before.filter(n => !after.includes(n)); return new Change(false, undefined, new RemovedNumbers_1.RemovedNumbers(rule, number.row, number.col, removedNumbers)); } return Change.none(); } hasSolvedNumber() { return this.solvedNumber !== undefined; } hasRemovedNumbers() { return this.removedNumbers !== undefined; } } exports.Change = Change;