sudoku-solve
Version:
Konni's Sudoku solving library
49 lines (48 loc) • 1.6 kB
JavaScript
;
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;