binary-decision-diagram 1.4.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/main.yml +2 -2
- package/dist/es/abstract-node.js +45 -51
- package/dist/es/abstract-node.js.map +1 -1
- package/dist/es/branches.js +20 -22
- package/dist/es/branches.js.map +1 -1
- package/dist/es/create-bdd-from-truth-table.js +19 -57
- package/dist/es/create-bdd-from-truth-table.js.map +1 -1
- package/dist/es/ensure-correct-bdd.js +26 -27
- package/dist/es/ensure-correct-bdd.js.map +1 -1
- package/dist/es/fill-truth-table.js +3 -3
- package/dist/es/fill-truth-table.js.map +1 -1
- package/dist/es/find-similar-node.js +3 -3
- package/dist/es/find-similar-node.js.map +1 -1
- package/dist/es/internal-node.js +15 -35
- package/dist/es/internal-node.js.map +1 -1
- package/dist/es/leaf-node.js +14 -34
- package/dist/es/leaf-node.js.map +1 -1
- package/dist/es/minimal-string/bdd-to-minimal-string.js +15 -15
- package/dist/es/minimal-string/bdd-to-minimal-string.js.map +1 -1
- package/dist/es/minimal-string/bdd-to-simple-bdd.js +2 -2
- package/dist/es/minimal-string/bdd-to-simple-bdd.js.map +1 -1
- package/dist/es/minimal-string/minimal-string-to-simple-bdd.js +27 -27
- package/dist/es/minimal-string/minimal-string-to-simple-bdd.js.map +1 -1
- package/dist/es/minimal-string/resolve-with-simple-bdd.js +4 -4
- package/dist/es/minimal-string/resolve-with-simple-bdd.js.map +1 -1
- package/dist/es/minimal-string/string-format.js +7 -7
- package/dist/es/minimal-string/string-format.js.map +1 -1
- package/dist/es/optimize-brute-force.d.ts +4 -4
- package/dist/es/optimize-brute-force.js +88 -186
- package/dist/es/optimize-brute-force.js.map +1 -1
- package/dist/es/parents.js +19 -47
- package/dist/es/parents.js.map +1 -1
- package/dist/es/root-node.js +79 -133
- package/dist/es/root-node.js.map +1 -1
- package/dist/es/types.d.ts +9 -9
- package/dist/es/util.js +21 -39
- package/dist/es/util.js.map +1 -1
- package/dist/lib/abstract-node.js +48 -57
- package/dist/lib/abstract-node.js.map +1 -1
- package/dist/lib/branches.js +21 -27
- package/dist/lib/branches.js.map +1 -1
- package/dist/lib/create-bdd-from-truth-table.js +24 -66
- package/dist/lib/create-bdd-from-truth-table.js.map +1 -1
- package/dist/lib/ensure-correct-bdd.js +27 -33
- package/dist/lib/ensure-correct-bdd.js.map +1 -1
- package/dist/lib/fill-truth-table.js +6 -10
- package/dist/lib/fill-truth-table.js.map +1 -1
- package/dist/lib/find-similar-node.js +4 -8
- package/dist/lib/find-similar-node.js.map +1 -1
- package/dist/lib/index.js +13 -25
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/internal-node.js +18 -41
- package/dist/lib/internal-node.js.map +1 -1
- package/dist/lib/leaf-node.js +17 -40
- package/dist/lib/leaf-node.js.map +1 -1
- package/dist/lib/minimal-string/bdd-to-minimal-string.js +21 -26
- package/dist/lib/minimal-string/bdd-to-minimal-string.js.map +1 -1
- package/dist/lib/minimal-string/bdd-to-simple-bdd.js +4 -9
- package/dist/lib/minimal-string/bdd-to-simple-bdd.js.map +1 -1
- package/dist/lib/minimal-string/index.js +5 -17
- package/dist/lib/minimal-string/index.js.map +1 -1
- package/dist/lib/minimal-string/minimal-string-to-simple-bdd.js +30 -34
- package/dist/lib/minimal-string/minimal-string-to-simple-bdd.js.map +1 -1
- package/dist/lib/minimal-string/resolve-with-simple-bdd.js +6 -10
- package/dist/lib/minimal-string/resolve-with-simple-bdd.js.map +1 -1
- package/dist/lib/minimal-string/string-format.js +12 -19
- package/dist/lib/minimal-string/string-format.js.map +1 -1
- package/dist/lib/optimize-brute-force.d.ts +4 -4
- package/dist/lib/optimize-brute-force.js +93 -199
- package/dist/lib/optimize-brute-force.js.map +1 -1
- package/dist/lib/parents.js +19 -50
- package/dist/lib/parents.js.map +1 -1
- package/dist/lib/root-node.js +84 -141
- package/dist/lib/root-node.js.map +1 -1
- package/dist/lib/types.d.ts +9 -9
- package/dist/lib/types.js +1 -2
- package/dist/lib/util.js +36 -72
- package/dist/lib/util.js.map +1 -1
- package/package.json +8 -8
- package/tsconfig.json +2 -2
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findSimilarNode = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* find an simliar node in a list of nodes
|
|
6
3
|
* which is not exactly the same node
|
|
7
4
|
* @hotpath
|
|
8
5
|
*/
|
|
9
|
-
function findSimilarNode(own, others) {
|
|
10
|
-
|
|
11
|
-
for (
|
|
12
|
-
|
|
6
|
+
export function findSimilarNode(own, others) {
|
|
7
|
+
const ownString = own.toString();
|
|
8
|
+
for (let i = 0; i < others.length; i++) {
|
|
9
|
+
const other = others[i];
|
|
13
10
|
if (own !== other &&
|
|
14
11
|
!other.deleted &&
|
|
15
12
|
own.isEqualToOtherNode(other, ownString)) {
|
|
@@ -18,5 +15,4 @@ function findSimilarNode(own, others) {
|
|
|
18
15
|
}
|
|
19
16
|
return null;
|
|
20
17
|
}
|
|
21
|
-
exports.findSimilarNode = findSimilarNode;
|
|
22
18
|
//# sourceMappingURL=find-similar-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find-similar-node.js","sourceRoot":"","sources":["../../src/find-similar-node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"find-similar-node.js","sourceRoot":"","sources":["../../src/find-similar-node.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC3B,GAAM,EACN,MAAW;IAEX,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IACI,GAAG,KAAK,KAAK;YACb,CAAC,KAAK,CAAC,OAAO;YACd,GAAG,CAAC,kBAAkB,CAClB,KAAY,EACZ,SAAS,CACZ,EACH;YACE,OAAO,KAAK,CAAC;SAChB;KACJ;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -1,26 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
__exportStar(require("./abstract-node"), exports);
|
|
15
|
-
__exportStar(require("./branches"), exports);
|
|
16
|
-
__exportStar(require("./create-bdd-from-truth-table"), exports);
|
|
17
|
-
__exportStar(require("./ensure-correct-bdd"), exports);
|
|
18
|
-
__exportStar(require("./fill-truth-table"), exports);
|
|
19
|
-
__exportStar(require("./find-similar-node"), exports);
|
|
20
|
-
__exportStar(require("./internal-node"), exports);
|
|
21
|
-
__exportStar(require("./leaf-node"), exports);
|
|
22
|
-
__exportStar(require("./optimize-brute-force"), exports);
|
|
23
|
-
__exportStar(require("./parents"), exports);
|
|
24
|
-
__exportStar(require("./root-node"), exports);
|
|
25
|
-
__exportStar(require("./util"), exports);
|
|
1
|
+
export * from './minimal-string/index';
|
|
2
|
+
export * from './abstract-node';
|
|
3
|
+
export * from './branches';
|
|
4
|
+
export * from './create-bdd-from-truth-table';
|
|
5
|
+
export * from './ensure-correct-bdd';
|
|
6
|
+
export * from './fill-truth-table';
|
|
7
|
+
export * from './find-similar-node';
|
|
8
|
+
export * from './internal-node';
|
|
9
|
+
export * from './leaf-node';
|
|
10
|
+
export * from './optimize-brute-force';
|
|
11
|
+
export * from './parents';
|
|
12
|
+
export * from './root-node';
|
|
13
|
+
export * from './util';
|
|
26
14
|
//# sourceMappingURL=index.js.map
|
package/dist/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
|
|
@@ -1,53 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.InternalNode = void 0;
|
|
19
|
-
var branches_1 = require("./branches");
|
|
20
|
-
var parents_1 = require("./parents");
|
|
21
|
-
var abstract_node_1 = require("./abstract-node");
|
|
22
|
-
var InternalNode = /** @class */ (function (_super) {
|
|
23
|
-
__extends(InternalNode, _super);
|
|
24
|
-
function InternalNode(level, rootNode, parent) {
|
|
25
|
-
var _this = _super.call(this, level, rootNode, 'InternalNode') || this;
|
|
26
|
-
_this.branches = new branches_1.Branches(_this);
|
|
27
|
-
_this.parents = new parents_1.Parents(_this);
|
|
28
|
-
_this.parents.add(parent);
|
|
29
|
-
return _this;
|
|
1
|
+
import { Branches } from './branches';
|
|
2
|
+
import { Parents } from './parents';
|
|
3
|
+
import { AbstractNode } from './abstract-node';
|
|
4
|
+
export class InternalNode extends AbstractNode {
|
|
5
|
+
constructor(level, rootNode, parent) {
|
|
6
|
+
super(level, rootNode, 'InternalNode');
|
|
7
|
+
this.branches = new Branches(this);
|
|
8
|
+
this.parents = new Parents(this);
|
|
9
|
+
this.parents.add(parent);
|
|
30
10
|
}
|
|
31
11
|
/**
|
|
32
12
|
* by the reduction-rule of bdd,
|
|
33
13
|
* if both branches are equal,
|
|
34
14
|
* we can remove this node from the bdd
|
|
35
15
|
*/
|
|
36
|
-
|
|
16
|
+
applyReductionRule() {
|
|
37
17
|
// console.log('applyReductionRule() ' + this.id);
|
|
38
|
-
var _this = this;
|
|
39
18
|
if (this.branches.hasEqualBranches()) {
|
|
40
19
|
this.ensureNotDeleted('applyReductionRule');
|
|
41
|
-
|
|
20
|
+
const keepBranch = this.branches.getBranch('0');
|
|
42
21
|
// move own parents to keepBranch
|
|
43
|
-
|
|
44
|
-
ownParents.forEach(
|
|
22
|
+
const ownParents = this.parents.getAll();
|
|
23
|
+
ownParents.forEach(parent => {
|
|
45
24
|
// console.log('ownParent: ' + parent.id);
|
|
46
|
-
|
|
47
|
-
parent.branches.setBranch(branchKey,
|
|
25
|
+
const branchKey = parent.branches.getKeyOfNode(this);
|
|
26
|
+
parent.branches.setBranch(branchKey, keepBranch);
|
|
48
27
|
// remove parents from own list
|
|
49
28
|
// this will auto-remove the connection to the other '1'-branch
|
|
50
|
-
|
|
29
|
+
this.parents.remove(parent);
|
|
51
30
|
// if parent has now two equal branches,
|
|
52
31
|
// we have to apply the reduction again
|
|
53
32
|
// to ensure we end in a valid state
|
|
@@ -58,8 +37,6 @@ var InternalNode = /** @class */ (function (_super) {
|
|
|
58
37
|
return true;
|
|
59
38
|
}
|
|
60
39
|
return false;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
}(abstract_node_1.AbstractNode));
|
|
64
|
-
exports.InternalNode = InternalNode;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
65
42
|
//# sourceMappingURL=internal-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-node.js","sourceRoot":"","sources":["../../src/internal-node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"internal-node.js","sourceRoot":"","sources":["../../src/internal-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,OAAO,YAAa,SAAQ,YAAY;IAI1C,YACI,KAAa,EACb,QAAkB,EAClB,MAAmB;QAEnB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QARpC,aAAQ,GAAa,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,YAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAQ/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAID;;;;OAIG;IACH,kBAAkB;QAEd,kDAAkD;QAElD,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE;YAClC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC;YAC5C,MAAM,UAAU,GAAgB,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAE7D,iCAAiC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACzC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACxB,0CAA0C;gBAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBAEjD,+BAA+B;gBAC/B,+DAA+D;gBAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAE5B,wCAAwC;gBACxC,uCAAuC;gBACvC,oCAAoC;gBACpC,IAAI,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE;oBACpE,MAAuB,CAAC,kBAAkB,EAAE,CAAC;iBACjD;YACL,CAAC,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CAEJ"}
|
package/dist/lib/leaf-node.js
CHANGED
|
@@ -1,52 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.LeafNode = void 0;
|
|
19
|
-
var parents_1 = require("./parents");
|
|
20
|
-
var abstract_node_1 = require("./abstract-node");
|
|
21
|
-
var util_1 = require("./util");
|
|
22
|
-
var LeafNode = /** @class */ (function (_super) {
|
|
23
|
-
__extends(LeafNode, _super);
|
|
24
|
-
function LeafNode(level, rootNode, value, parent) {
|
|
25
|
-
var _this = _super.call(this, level, rootNode, 'LeafNode') || this;
|
|
26
|
-
_this.value = value;
|
|
27
|
-
_this.parents = new parents_1.Parents(_this);
|
|
28
|
-
_this.parents.add(parent);
|
|
29
|
-
return _this;
|
|
1
|
+
import { Parents } from './parents';
|
|
2
|
+
import { AbstractNode } from './abstract-node';
|
|
3
|
+
import { oppositeBoolean } from './util';
|
|
4
|
+
export class LeafNode extends AbstractNode {
|
|
5
|
+
constructor(level, rootNode, value, parent) {
|
|
6
|
+
super(level, rootNode, 'LeafNode');
|
|
7
|
+
this.value = value;
|
|
8
|
+
this.parents = new Parents(this);
|
|
9
|
+
this.parents.add(parent);
|
|
30
10
|
}
|
|
31
|
-
|
|
32
|
-
var _this = this;
|
|
11
|
+
removeIfValueEquals(value) {
|
|
33
12
|
this.ensureNotDeleted();
|
|
34
13
|
if (this.value !== value) {
|
|
35
14
|
return false;
|
|
36
15
|
}
|
|
37
|
-
|
|
38
|
-
parents.forEach(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
16
|
+
const parents = this.parents.getAll();
|
|
17
|
+
parents.forEach(parent => {
|
|
18
|
+
const branchKey = parent.branches.getKeyOfNode(this);
|
|
19
|
+
const otherBranch = parent.branches.getBranch(oppositeBoolean(branchKey));
|
|
20
|
+
this.parents.remove(parent);
|
|
42
21
|
parent.branches.setBranch(branchKey, otherBranch);
|
|
43
22
|
if (parent.isInternalNode()) {
|
|
44
23
|
parent.applyReductionRule();
|
|
45
24
|
}
|
|
46
25
|
});
|
|
47
26
|
return true;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
}(abstract_node_1.AbstractNode));
|
|
51
|
-
exports.LeafNode = LeafNode;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
52
29
|
//# sourceMappingURL=leaf-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaf-node.js","sourceRoot":"","sources":["../../src/leaf-node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"leaf-node.js","sourceRoot":"","sources":["../../src/leaf-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAGzC,MAAM,OAAO,QAAS,SAAQ,YAAY;IAGtC,YACI,KAAa,EACb,QAAkB,EACX,KAAa,EACpB,MAAmB;QAEnB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QAH5B,UAAK,GAAL,KAAK,CAAQ;QALjB,YAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAS/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;YACtB,OAAO,KAAK,CAAC;SAChB;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACrB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAClD,IAAI,MAAM,CAAC,cAAc,EAAE,EAAE;gBACxB,MAAuB,CAAC,kBAAkB,EAAE,CAAC;aACjD;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;CAGJ"}
|
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
function bddToMinimalString(bdd) {
|
|
7
|
-
var ret = '';
|
|
8
|
-
var currentCharCode = string_format_2.FIRST_CHAR_CODE_FOR_ID;
|
|
1
|
+
import { getCharOfLevel, getCharOfValue, getNextCharId } from './string-format';
|
|
2
|
+
import { FIRST_CHAR_CODE_FOR_ID } from './string-format';
|
|
3
|
+
export function bddToMinimalString(bdd) {
|
|
4
|
+
let ret = '';
|
|
5
|
+
let currentCharCode = FIRST_CHAR_CODE_FOR_ID;
|
|
9
6
|
// add leaf node count
|
|
10
|
-
|
|
7
|
+
const leafNodeAmount = bdd.getLeafNodes().length;
|
|
11
8
|
if (leafNodeAmount > 99) {
|
|
12
9
|
throw new Error('cannot build string with too many leaf nodes');
|
|
13
10
|
}
|
|
14
11
|
ret += leafNodeAmount.toString().padStart(2, '0');
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
levelsHighestFirst.forEach(
|
|
18
|
-
|
|
19
|
-
nodes.forEach(
|
|
20
|
-
|
|
12
|
+
const levelsHighestFirst = bdd.levels.slice().reverse();
|
|
13
|
+
const idByNode = new Map();
|
|
14
|
+
levelsHighestFirst.forEach(level => {
|
|
15
|
+
const nodes = bdd.getNodesOfLevel(level);
|
|
16
|
+
nodes.forEach(node => {
|
|
17
|
+
const stringRep = nodeToString(node, idByNode, currentCharCode);
|
|
21
18
|
currentCharCode = stringRep.nextCode;
|
|
22
19
|
idByNode.set(node, stringRep.id);
|
|
23
20
|
ret += stringRep.str;
|
|
@@ -25,36 +22,34 @@ function bddToMinimalString(bdd) {
|
|
|
25
22
|
});
|
|
26
23
|
return ret;
|
|
27
24
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var nextId = (0, string_format_1.getNextCharId)(lastCode);
|
|
25
|
+
export function nodeToString(node, idByNode, lastCode) {
|
|
26
|
+
const nextId = getNextCharId(lastCode);
|
|
31
27
|
switch (node.type) {
|
|
32
28
|
case 'LeafNode':
|
|
33
|
-
|
|
29
|
+
const valueChar = getCharOfValue(node.asLeafNode().value);
|
|
34
30
|
return {
|
|
35
31
|
id: nextId.char,
|
|
36
32
|
nextCode: nextId.nextCode,
|
|
37
33
|
str: nextId.char + valueChar
|
|
38
34
|
};
|
|
39
35
|
case 'InternalNode':
|
|
40
|
-
|
|
41
|
-
|
|
36
|
+
const branch0Id = idByNode.get(node.asInternalNode().branches.getBranch('0'));
|
|
37
|
+
const branch1Id = idByNode.get(node.asInternalNode().branches.getBranch('1'));
|
|
42
38
|
return {
|
|
43
39
|
id: nextId.char,
|
|
44
40
|
nextCode: nextId.nextCode,
|
|
45
|
-
str: nextId.char + branch0Id + branch1Id +
|
|
41
|
+
str: nextId.char + branch0Id + branch1Id + getCharOfLevel(node.level)
|
|
46
42
|
};
|
|
47
43
|
case 'RootNode':
|
|
48
|
-
|
|
49
|
-
|
|
44
|
+
const branch0IdRoot = idByNode.get(node.asRootNode().branches.getBranch('0'));
|
|
45
|
+
const branch1IdRoot = idByNode.get(node.asRootNode().branches.getBranch('1'));
|
|
50
46
|
return {
|
|
51
47
|
id: nextId.char,
|
|
52
48
|
nextCode: nextId.nextCode,
|
|
53
|
-
str: '' + branch0IdRoot + branch1IdRoot +
|
|
49
|
+
str: '' + branch0IdRoot + branch1IdRoot + getCharOfLevel(node.level)
|
|
54
50
|
};
|
|
55
51
|
default:
|
|
56
52
|
throw new Error('unknown node type');
|
|
57
53
|
}
|
|
58
54
|
}
|
|
59
|
-
exports.nodeToString = nodeToString;
|
|
60
55
|
//# sourceMappingURL=bdd-to-minimal-string.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bdd-to-minimal-string.js","sourceRoot":"","sources":["../../../src/minimal-string/bdd-to-minimal-string.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bdd-to-minimal-string.js","sourceRoot":"","sources":["../../../src/minimal-string/bdd-to-minimal-string.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,19 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.nodeToSimpleBddNode = exports.bddToSimpleBdd = void 0;
|
|
4
1
|
/**
|
|
5
2
|
* @recursive
|
|
6
3
|
*/
|
|
7
|
-
function bddToSimpleBdd(bdd) {
|
|
4
|
+
export function bddToSimpleBdd(bdd) {
|
|
8
5
|
return nodeToSimpleBddNode(bdd);
|
|
9
6
|
}
|
|
10
|
-
exports.bddToSimpleBdd = bddToSimpleBdd;
|
|
11
7
|
/**
|
|
12
8
|
* @recursive
|
|
13
9
|
*/
|
|
14
|
-
function nodeToSimpleBddNode(node) {
|
|
15
|
-
|
|
16
|
-
|
|
10
|
+
export function nodeToSimpleBddNode(node) {
|
|
11
|
+
const branch0 = node.branches.getBranch('0');
|
|
12
|
+
const branch1 = node.branches.getBranch('1');
|
|
17
13
|
return {
|
|
18
14
|
l: node.level,
|
|
19
15
|
0: branch0.isLeafNode() ? branch0.asLeafNode().value : nodeToSimpleBddNode(branch0),
|
|
20
16
|
1: branch1.isLeafNode() ? branch1.asLeafNode().value : nodeToSimpleBddNode(branch1),
|
|
21
17
|
};
|
|
22
18
|
}
|
|
23
|
-
exports.nodeToSimpleBddNode = nodeToSimpleBddNode;
|
|
24
19
|
//# sourceMappingURL=bdd-to-simple-bdd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bdd-to-simple-bdd.js","sourceRoot":"","sources":["../../../src/minimal-string/bdd-to-simple-bdd.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bdd-to-simple-bdd.js","sourceRoot":"","sources":["../../../src/minimal-string/bdd-to-simple-bdd.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAa;IACxC,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAGD;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAC/B,IAAkB;IAGlB,MAAM,OAAO,GAAkB,IAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAkB,IAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAE7E,OAAO;QACH,CAAC,EAAE,IAAI,CAAC,KAAK;QACb,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC;QACnF,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC;KACtF,CAAC;AACN,CAAC"}
|
|
@@ -1,18 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
__exportStar(require("./bdd-to-minimal-string"), exports);
|
|
14
|
-
__exportStar(require("./minimal-string-to-simple-bdd"), exports);
|
|
15
|
-
__exportStar(require("./resolve-with-simple-bdd"), exports);
|
|
16
|
-
__exportStar(require("./string-format"), exports);
|
|
17
|
-
__exportStar(require("./bdd-to-simple-bdd"), exports);
|
|
1
|
+
export * from './bdd-to-minimal-string';
|
|
2
|
+
export * from './minimal-string-to-simple-bdd';
|
|
3
|
+
export * from './resolve-with-simple-bdd';
|
|
4
|
+
export * from './string-format';
|
|
5
|
+
export * from './bdd-to-simple-bdd';
|
|
18
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/minimal-string/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/minimal-string/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC"}
|
|
@@ -1,39 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var string_format_1 = require("./string-format");
|
|
6
|
-
function minimalStringToSimpleBdd(str) {
|
|
7
|
-
var nodesById = new Map();
|
|
1
|
+
import { splitStringToChunks } from '../util';
|
|
2
|
+
import { getNumberOfChar } from './string-format';
|
|
3
|
+
export function minimalStringToSimpleBdd(str) {
|
|
4
|
+
const nodesById = new Map();
|
|
8
5
|
// parse leaf nodes
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
for (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
const leafNodeAmount = parseInt(str.charAt(0) + str.charAt(1), 10);
|
|
7
|
+
const lastLeafNodeChar = (2 + leafNodeAmount * 2);
|
|
8
|
+
const leafNodeChars = str.substring(2, lastLeafNodeChar);
|
|
9
|
+
const leafNodeChunks = splitStringToChunks(leafNodeChars, 2);
|
|
10
|
+
for (let i = 0; i < leafNodeChunks.length; i++) {
|
|
11
|
+
const chunk = leafNodeChunks[i];
|
|
12
|
+
const id = chunk.charAt(0);
|
|
13
|
+
const value = getNumberOfChar(chunk.charAt(1));
|
|
17
14
|
nodesById.set(id, value);
|
|
18
15
|
}
|
|
19
16
|
// parse internal nodes
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
for (
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
const internalNodeChars = str.substring(lastLeafNodeChar, str.length - 3);
|
|
18
|
+
const internalNodeChunks = splitStringToChunks(internalNodeChars, 4);
|
|
19
|
+
for (let i = 0; i < internalNodeChunks.length; i++) {
|
|
20
|
+
const chunk = internalNodeChunks[i];
|
|
21
|
+
const id = chunk.charAt(0);
|
|
22
|
+
const idOf0Branch = chunk.charAt(1);
|
|
23
|
+
const idOf1Branch = chunk.charAt(2);
|
|
24
|
+
const level = getNumberOfChar(chunk.charAt(3));
|
|
28
25
|
if (!nodesById.has(idOf0Branch)) {
|
|
29
26
|
throw new Error('missing node with id ' + idOf0Branch);
|
|
30
27
|
}
|
|
31
28
|
if (!nodesById.has(idOf1Branch)) {
|
|
32
29
|
throw new Error('missing node with id ' + idOf1Branch);
|
|
33
30
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
const node0 = nodesById.get(idOf0Branch);
|
|
32
|
+
const node1 = nodesById.get(idOf1Branch);
|
|
33
|
+
const node = {
|
|
37
34
|
l: level,
|
|
38
35
|
0: node0,
|
|
39
36
|
1: node1
|
|
@@ -41,18 +38,17 @@ function minimalStringToSimpleBdd(str) {
|
|
|
41
38
|
nodesById.set(id, node);
|
|
42
39
|
}
|
|
43
40
|
// parse root node
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
const last3 = str.slice(-3);
|
|
42
|
+
const idOf0 = last3.charAt(0);
|
|
43
|
+
const idOf1 = last3.charAt(1);
|
|
44
|
+
const levelOfRoot = getNumberOfChar(last3.charAt(2));
|
|
45
|
+
const nodeOf0 = nodesById.get(idOf0);
|
|
46
|
+
const nodeOf1 = nodesById.get(idOf1);
|
|
47
|
+
const rootNode = {
|
|
51
48
|
l: levelOfRoot,
|
|
52
49
|
0: nodeOf0,
|
|
53
50
|
1: nodeOf1,
|
|
54
51
|
};
|
|
55
52
|
return rootNode;
|
|
56
53
|
}
|
|
57
|
-
exports.minimalStringToSimpleBdd = minimalStringToSimpleBdd;
|
|
58
54
|
//# sourceMappingURL=minimal-string-to-simple-bdd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minimal-string-to-simple-bdd.js","sourceRoot":"","sources":["../../../src/minimal-string/minimal-string-to-simple-bdd.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"minimal-string-to-simple-bdd.js","sourceRoot":"","sources":["../../../src/minimal-string/minimal-string-to-simple-bdd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
function resolveWithSimpleBdd(simpleBdd, fns, input) {
|
|
6
|
-
var currentNode = simpleBdd;
|
|
7
|
-
var currentLevel = simpleBdd.l;
|
|
1
|
+
import { booleanToBooleanString } from '../util';
|
|
2
|
+
export function resolveWithSimpleBdd(simpleBdd, fns, input) {
|
|
3
|
+
let currentNode = simpleBdd;
|
|
4
|
+
let currentLevel = simpleBdd.l;
|
|
8
5
|
while (true) {
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const booleanResult = fns[currentLevel](input);
|
|
7
|
+
const branchKey = booleanToBooleanString(booleanResult);
|
|
11
8
|
currentNode = currentNode[branchKey];
|
|
12
9
|
if (typeof currentNode === 'number' || typeof currentNode === 'string') {
|
|
13
10
|
return currentNode;
|
|
@@ -17,5 +14,4 @@ function resolveWithSimpleBdd(simpleBdd, fns, input) {
|
|
|
17
14
|
}
|
|
18
15
|
}
|
|
19
16
|
}
|
|
20
|
-
exports.resolveWithSimpleBdd = resolveWithSimpleBdd;
|
|
21
17
|
//# sourceMappingURL=resolve-with-simple-bdd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-with-simple-bdd.js","sourceRoot":"","sources":["../../../src/minimal-string/resolve-with-simple-bdd.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolve-with-simple-bdd.js","sourceRoot":"","sources":["../../../src/minimal-string/resolve-with-simple-bdd.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,UAAU,oBAAoB,CAChC,SAAoB,EACpB,GAAsB,EACtB,KAAU;IAEV,IAAI,WAAW,GAAkC,SAAS,CAAC;IAC3D,IAAI,YAAY,GAAW,SAAS,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,EAAE;QACT,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;QACxD,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACpE,OAAO,WAAkB,CAAC;SAC7B;aAAM;YACH,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;SAChC;KACJ;AACL,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/*
|
|
3
2
|
let t = 0;
|
|
4
3
|
while (t < 10000) {
|
|
@@ -7,8 +6,6 @@ while (t < 10000) {
|
|
|
7
6
|
t++;
|
|
8
7
|
}
|
|
9
8
|
*/
|
|
10
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.getNextCharId = exports.FIRST_CHAR_CODE_FOR_ID = exports.getCharOfValue = exports.getNumberOfChar = exports.getCharOfLevel = exports.CHAR_CODE_OFFSET = void 0;
|
|
12
9
|
/*
|
|
13
10
|
|
|
14
11
|
To have a really small string representation, we have to hack some stuff
|
|
@@ -29,33 +26,29 @@ Rules for the string:
|
|
|
29
26
|
|
|
30
27
|
*/
|
|
31
28
|
// we use this because 39 is the quotes which causes problems
|
|
32
|
-
|
|
33
|
-
function getCharOfLevel(level) {
|
|
34
|
-
|
|
29
|
+
export const CHAR_CODE_OFFSET = 40; // String.fromCharCode(33) === ')'
|
|
30
|
+
export function getCharOfLevel(level) {
|
|
31
|
+
const charCode = CHAR_CODE_OFFSET + level;
|
|
35
32
|
return String.fromCharCode(charCode);
|
|
36
33
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
return charCode - exports.CHAR_CODE_OFFSET;
|
|
34
|
+
export function getNumberOfChar(char) {
|
|
35
|
+
const charCode = char.charCodeAt(0);
|
|
36
|
+
return charCode - CHAR_CODE_OFFSET;
|
|
41
37
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
var charCode = exports.CHAR_CODE_OFFSET + value;
|
|
38
|
+
export function getCharOfValue(value) {
|
|
39
|
+
const charCode = CHAR_CODE_OFFSET + value;
|
|
45
40
|
return String.fromCharCode(charCode);
|
|
46
41
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
function getNextCharId(lastCode) {
|
|
42
|
+
export const FIRST_CHAR_CODE_FOR_ID = 97; // String.fromCharCode(97) === 'a'
|
|
43
|
+
export function getNextCharId(lastCode) {
|
|
50
44
|
// jump these codes because they look strange
|
|
51
45
|
if (lastCode >= 128 && lastCode <= 160) {
|
|
52
46
|
lastCode = 161;
|
|
53
47
|
}
|
|
54
|
-
|
|
48
|
+
const char = String.fromCharCode(lastCode);
|
|
55
49
|
return {
|
|
56
|
-
char
|
|
50
|
+
char,
|
|
57
51
|
nextCode: lastCode + 1
|
|
58
52
|
};
|
|
59
53
|
}
|
|
60
|
-
exports.getNextCharId = getNextCharId;
|
|
61
54
|
//# sourceMappingURL=string-format.js.map
|