iddfs
Version:
iterative deepening depth-first search (IDDFS) for JavaScript
73 lines (55 loc) • 2.48 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var Strategy =
/*#__PURE__*/
function () {
function Strategy(options) {
_classCallCheck(this, Strategy);
_defineProperty(this, "customIsVisited", void 0);
_defineProperty(this, "isGoal", void 0);
_defineProperty(this, "expand", void 0);
_defineProperty(this, "extractId", void 0);
_defineProperty(this, "customShouldContinue", void 0);
_defineProperty(this, "customOnVisit", void 0);
this.isGoal = options.isGoal;
this.expand = options.expand;
this.extractId = options.extractId;
this.customShouldContinue = options.shouldContinue || null;
this.customIsVisited = options.isVisited || null;
this.customOnVisit = options.onVisit || null;
}
_createClass(Strategy, [{
key: "shouldContinue",
value: function shouldContinue(node, depth, depthLimit) {
if (this.customShouldContinue) {
return this.customShouldContinue(node, depth, depthLimit);
}
return true;
}
}, {
key: "isVisited",
value: function isVisited(node, visited) {
if (this.customIsVisited) {
return this.customIsVisited(node, visited);
}
var index = visited.indexOf(this.extractId(node));
return index < 0 ? null : index;
}
}, {
key: "onVisit",
value: function onVisit(node, depth, visited) {
if (this.customOnVisit) {
this.customOnVisit(node, depth, visited);
}
}
}]);
return Strategy;
}();
exports.default = Strategy;
;