binary-decision-diagram 2.0.0 → 2.0.1
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/dist/lib/abstract-node.js +9 -5
- package/dist/lib/abstract-node.js.map +1 -1
- package/dist/lib/branches.js +7 -2
- package/dist/lib/branches.js.map +1 -1
- package/dist/lib/create-bdd-from-truth-table.js +13 -9
- package/dist/lib/create-bdd-from-truth-table.js.map +1 -1
- package/dist/lib/ensure-correct-bdd.js +7 -2
- package/dist/lib/ensure-correct-bdd.js.map +1 -1
- package/dist/lib/fill-truth-table.js +9 -5
- package/dist/lib/fill-truth-table.js.map +1 -1
- package/dist/lib/find-similar-node.js +5 -1
- package/dist/lib/find-similar-node.js.map +1 -1
- package/dist/lib/index.js +29 -13
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/internal-node.js +10 -6
- package/dist/lib/internal-node.js.map +1 -1
- package/dist/lib/leaf-node.js +10 -6
- package/dist/lib/leaf-node.js.map +1 -1
- package/dist/lib/minimal-string/bdd-to-minimal-string.js +14 -9
- package/dist/lib/minimal-string/bdd-to-minimal-string.js.map +1 -1
- package/dist/lib/minimal-string/bdd-to-simple-bdd.js +7 -2
- package/dist/lib/minimal-string/bdd-to-simple-bdd.js.map +1 -1
- package/dist/lib/minimal-string/index.js +21 -5
- package/dist/lib/minimal-string/index.js.map +1 -1
- package/dist/lib/minimal-string/minimal-string-to-simple-bdd.js +12 -8
- package/dist/lib/minimal-string/minimal-string-to-simple-bdd.js.map +1 -1
- package/dist/lib/minimal-string/resolve-with-simple-bdd.js +7 -3
- package/dist/lib/minimal-string/resolve-with-simple-bdd.js.map +1 -1
- package/dist/lib/minimal-string/string-format.js +16 -9
- package/dist/lib/minimal-string/string-format.js.map +1 -1
- package/dist/lib/optimize-brute-force.js +20 -12
- package/dist/lib/optimize-brute-force.js.map +1 -1
- package/dist/lib/parents.js +5 -1
- package/dist/lib/parents.js.map +1 -1
- package/dist/lib/root-node.js +14 -10
- package/dist/lib/root-node.js.map +1 -1
- package/dist/lib/types.js +2 -1
- package/dist/lib/util.js +33 -15
- package/dist/lib/util.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AbstractNode = void 0;
|
|
4
|
+
const util_1 = require("./util");
|
|
5
|
+
const find_similar_node_1 = require("./find-similar-node");
|
|
6
|
+
class AbstractNode {
|
|
4
7
|
constructor(level, rootNode, type) {
|
|
5
8
|
this.level = level;
|
|
6
|
-
this.id = nextNodeId();
|
|
9
|
+
this.id = (0, util_1.nextNodeId)();
|
|
7
10
|
this.deleted = false;
|
|
8
11
|
this.type = type;
|
|
9
12
|
this.rootNode = rootNode;
|
|
@@ -130,7 +133,7 @@ export class AbstractNode {
|
|
|
130
133
|
if (!nodesOfSameLevel) {
|
|
131
134
|
nodesOfSameLevel = this.rootNode.getNodesOfLevel(this.level);
|
|
132
135
|
}
|
|
133
|
-
const other = findSimilarNode(this, nodesOfSameLevel);
|
|
136
|
+
const other = (0, find_similar_node_1.findSimilarNode)(this, nodesOfSameLevel);
|
|
134
137
|
if (other) {
|
|
135
138
|
// console.log('applyEliminationRule() remove:' + this.id + '; other: ' + other.id);
|
|
136
139
|
// keep 'other', remove 'this'
|
|
@@ -163,4 +166,5 @@ export class AbstractNode {
|
|
|
163
166
|
}
|
|
164
167
|
}
|
|
165
168
|
}
|
|
169
|
+
exports.AbstractNode = AbstractNode;
|
|
166
170
|
//# sourceMappingURL=abstract-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-node.js","sourceRoot":"","sources":["../../src/abstract-node.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"abstract-node.js","sourceRoot":"","sources":["../../src/abstract-node.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/branches.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ensureNodesNotStrictEqual = exports.Branches = void 0;
|
|
1
4
|
/**
|
|
2
5
|
* represents the branches of a single node
|
|
3
6
|
*/
|
|
4
|
-
|
|
7
|
+
class Branches {
|
|
5
8
|
constructor(node) {
|
|
6
9
|
this.node = node;
|
|
7
10
|
this.deleted = false;
|
|
@@ -62,9 +65,11 @@ export class Branches {
|
|
|
62
65
|
JSON.stringify(this.branches['1']);
|
|
63
66
|
}
|
|
64
67
|
}
|
|
65
|
-
|
|
68
|
+
exports.Branches = Branches;
|
|
69
|
+
function ensureNodesNotStrictEqual(node1, node2) {
|
|
66
70
|
if (node1 === node2) {
|
|
67
71
|
throw new Error('cannot have two strict equal branches');
|
|
68
72
|
}
|
|
69
73
|
}
|
|
74
|
+
exports.ensureNodesNotStrictEqual = ensureNodesNotStrictEqual;
|
|
70
75
|
//# sourceMappingURL=branches.js.map
|
package/dist/lib/branches.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branches.js","sourceRoot":"","sources":["../../src/branches.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"branches.js","sourceRoot":"","sources":["../../src/branches.ts"],"names":[],"mappings":";;;AAGA;;GAEG;AACH,MAAa,QAAQ;IAMjB,YACY,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QANtB,YAAO,GAAY,KAAK,CAAC;QACxB,aAAQ,GAEZ,EAAS,CAAC;IAIV,CAAC;IAEE,SAAS,CAAC,KAAoB,EAAE,UAAuB;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,UAAU,EAAE;YACzB,OAAO;SACV;QAED,iBAAiB;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;QAClC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,YAAY,CAAC,IAAiB;QACjC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,OAAO,GAAG,CAAC;SACd;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACrC,OAAO,GAAG,CAAC;SACd;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;SACnC;IACL,CAAC;IAEM,SAAS,CAAC,KAAoB;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,eAAe;QAClB,OAAO;YACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;SACtB,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,IAAkB;QACrC,IACI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI;YAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAC9B;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,iBAAiB,CAAC,EAAU;QAC/B,IACI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAC/B;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAEM,gBAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;CACJ;AAxED,4BAwEC;AAED,SAAgB,yBAAyB,CACrC,KAAkB,EAClB,KAAkB;IAElB,IAAI,KAAK,KAAK,KAAK,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC5D;AACL,CAAC;AAPD,8DAOC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createBddFromTruthTable = void 0;
|
|
4
|
+
const root_node_1 = require("./root-node");
|
|
5
|
+
const util_1 = require("./util");
|
|
6
|
+
const internal_node_1 = require("./internal-node");
|
|
7
|
+
const leaf_node_1 = require("./leaf-node");
|
|
8
|
+
function createBddFromTruthTable(truthTable) {
|
|
9
|
+
const root = new root_node_1.RootNode();
|
|
7
10
|
const firstKey = truthTable.keys().next().value;
|
|
8
11
|
const keyLength = firstKey.length;
|
|
9
12
|
const mustBeSize = Math.pow(2, keyLength);
|
|
@@ -18,17 +21,18 @@ export function createBddFromTruthTable(truthTable) {
|
|
|
18
21
|
const state = stateSet.charAt(i);
|
|
19
22
|
// if node for this state-char not exists, add new one
|
|
20
23
|
if (!lastNode.branches.getBranch(state)) {
|
|
21
|
-
lastNode.branches.setBranch(state, new InternalNode(level, root, lastNode));
|
|
24
|
+
lastNode.branches.setBranch(state, new internal_node_1.InternalNode(level, root, lastNode));
|
|
22
25
|
}
|
|
23
26
|
lastNode = lastNode.branches.getBranch(state);
|
|
24
27
|
}
|
|
25
28
|
// last node is leaf-node
|
|
26
|
-
const lastState = lastChar(stateSet);
|
|
29
|
+
const lastState = (0, util_1.lastChar)(stateSet);
|
|
27
30
|
if (lastNode.branches.getBranch(lastState)) {
|
|
28
31
|
throw new Error('leafNode already exists, this should not happen');
|
|
29
32
|
}
|
|
30
|
-
lastNode.branches.setBranch(lastState, new LeafNode(stateSet.length, root, value, lastNode));
|
|
33
|
+
lastNode.branches.setBranch(lastState, new leaf_node_1.LeafNode(stateSet.length, root, value, lastNode));
|
|
31
34
|
}
|
|
32
35
|
return root;
|
|
33
36
|
}
|
|
37
|
+
exports.createBddFromTruthTable = createBddFromTruthTable;
|
|
34
38
|
//# sourceMappingURL=create-bdd-from-truth-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-bdd-from-truth-table.js","sourceRoot":"","sources":["../../src/create-bdd-from-truth-table.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"create-bdd-from-truth-table.js","sourceRoot":"","sources":["../../src/create-bdd-from-truth-table.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AACvC,iCAAkC;AAClC,mDAA+C;AAC/C,2CAAuC;AAGvC,SAAgB,uBAAuB,CACnC,UAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,oBAAQ,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;IAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KACtD;IAGD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE;QACxC,IAAI,QAAQ,GAAgB,IAAI,CAAC;QAEjC,uCAAuC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,MAAM,KAAK,GAAkB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAkB,CAAC;YAEjE,sDAAsD;YACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACrC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CACvB,KAAK,EACL,IAAI,4BAAY,CACZ,KAAK,EACL,IAAI,EACJ,QAAQ,CACX,CACJ,CAAC;aACL;YACD,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAgB,CAAC;SAChE;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,IAAA,eAAQ,EAAC,QAAQ,CAAkB,CAAC;QACtD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;SACtE;QACD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CACvB,SAAS,EACT,IAAI,oBAAQ,CACR,QAAQ,CAAC,MAAM,EACf,IAAI,EACJ,KAAK,EACL,QAAQ,CACX,CACJ,CAAC;KACL;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AApDD,0DAoDC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getNodesRecursive = exports.ensureCorrectBdd = void 0;
|
|
1
4
|
/**
|
|
2
5
|
* run some tests on the bdd
|
|
3
6
|
* to ensure everything is correct
|
|
4
7
|
*/
|
|
5
|
-
|
|
8
|
+
function ensureCorrectBdd(bdd) {
|
|
6
9
|
const jsonString = JSON.stringify(bdd.toJSON(true));
|
|
7
10
|
let allNodes = [];
|
|
8
11
|
const nodesById = new Map();
|
|
@@ -81,7 +84,8 @@ export function ensureCorrectBdd(bdd) {
|
|
|
81
84
|
'bdd includes a deleted node');
|
|
82
85
|
}
|
|
83
86
|
}
|
|
84
|
-
|
|
87
|
+
exports.ensureCorrectBdd = ensureCorrectBdd;
|
|
88
|
+
function getNodesRecursive(node, set = new Set()) {
|
|
85
89
|
set.add(node);
|
|
86
90
|
if (!node.isLeafNode()) {
|
|
87
91
|
const useNode = node;
|
|
@@ -94,4 +98,5 @@ export function getNodesRecursive(node, set = new Set()) {
|
|
|
94
98
|
}
|
|
95
99
|
return set;
|
|
96
100
|
}
|
|
101
|
+
exports.getNodesRecursive = getNodesRecursive;
|
|
97
102
|
//# sourceMappingURL=ensure-correct-bdd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-correct-bdd.js","sourceRoot":"","sources":["../../src/ensure-correct-bdd.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"ensure-correct-bdd.js","sourceRoot":"","sources":["../../src/ensure-correct-bdd.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fillTruthTable = void 0;
|
|
4
|
+
const util_1 = require("./util");
|
|
2
5
|
/**
|
|
3
6
|
* fills each missing row of a table
|
|
4
7
|
* with the given value
|
|
5
8
|
*/
|
|
6
|
-
|
|
7
|
-
const endInput = maxBinaryWithLength(inputLength);
|
|
8
|
-
let currentInput = minBinaryWithLength(inputLength);
|
|
9
|
+
function fillTruthTable(truthTable, inputLength, value) {
|
|
10
|
+
const endInput = (0, util_1.maxBinaryWithLength)(inputLength);
|
|
11
|
+
let currentInput = (0, util_1.minBinaryWithLength)(inputLength);
|
|
9
12
|
let done = false;
|
|
10
13
|
while (!done) {
|
|
11
14
|
if (!truthTable.has(currentInput)) {
|
|
@@ -15,8 +18,9 @@ export function fillTruthTable(truthTable, inputLength, value) {
|
|
|
15
18
|
done = true;
|
|
16
19
|
}
|
|
17
20
|
else {
|
|
18
|
-
currentInput = getNextStateSet(currentInput);
|
|
21
|
+
currentInput = (0, util_1.getNextStateSet)(currentInput);
|
|
19
22
|
}
|
|
20
23
|
}
|
|
21
24
|
}
|
|
25
|
+
exports.fillTruthTable = fillTruthTable;
|
|
22
26
|
//# sourceMappingURL=fill-truth-table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fill-truth-table.js","sourceRoot":"","sources":["../../src/fill-truth-table.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"fill-truth-table.js","sourceRoot":"","sources":["../../src/fill-truth-table.ts"],"names":[],"mappings":";;;AAAA,iCAIgB;AAGhB;;;GAGG;AACH,SAAgB,cAAc,CAC1B,UAAsB,EACtB,WAAmB,EACnB,KAAa;IAEb,MAAM,QAAQ,GAAG,IAAA,0BAAmB,EAAC,WAAW,CAAC,CAAC;IAClD,IAAI,YAAY,GAAG,IAAA,0BAAmB,EAAC,WAAW,CAAC,CAAC;IACpD,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,OAAO,CAAC,IAAI,EAAE;QACV,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;YAC/B,UAAU,CAAC,GAAG,CACV,YAAY,EACZ,KAAK,CACR,CAAC;SACL;QACD,IAAI,YAAY,KAAK,QAAQ,EAAE;YAC3B,IAAI,GAAG,IAAI,CAAC;SACf;aAAM;YACH,YAAY,GAAG,IAAA,sBAAe,EAC1B,YAAY,CACf,CAAC;SACL;KACJ;AACL,CAAC;AAvBD,wCAuBC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findSimilarNode = void 0;
|
|
1
4
|
/**
|
|
2
5
|
* find an simliar node in a list of nodes
|
|
3
6
|
* which is not exactly the same node
|
|
4
7
|
* @hotpath
|
|
5
8
|
*/
|
|
6
|
-
|
|
9
|
+
function findSimilarNode(own, others) {
|
|
7
10
|
const ownString = own.toString();
|
|
8
11
|
for (let i = 0; i < others.length; i++) {
|
|
9
12
|
const other = others[i];
|
|
@@ -15,4 +18,5 @@ export function findSimilarNode(own, others) {
|
|
|
15
18
|
}
|
|
16
19
|
return null;
|
|
17
20
|
}
|
|
21
|
+
exports.findSimilarNode = findSimilarNode;
|
|
18
22
|
//# 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":"AAEA;;;;GAIG;AACH,
|
|
1
|
+
{"version":3,"file":"find-similar-node.js","sourceRoot":"","sources":["../../src/find-similar-node.ts"],"names":[],"mappings":";;;AAEA;;;;GAIG;AACH,SAAgB,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;AAnBD,0CAmBC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -1,14 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./minimal-string/index"), exports);
|
|
18
|
+
__exportStar(require("./abstract-node"), exports);
|
|
19
|
+
__exportStar(require("./branches"), exports);
|
|
20
|
+
__exportStar(require("./create-bdd-from-truth-table"), exports);
|
|
21
|
+
__exportStar(require("./ensure-correct-bdd"), exports);
|
|
22
|
+
__exportStar(require("./fill-truth-table"), exports);
|
|
23
|
+
__exportStar(require("./find-similar-node"), exports);
|
|
24
|
+
__exportStar(require("./internal-node"), exports);
|
|
25
|
+
__exportStar(require("./leaf-node"), exports);
|
|
26
|
+
__exportStar(require("./optimize-brute-force"), exports);
|
|
27
|
+
__exportStar(require("./parents"), exports);
|
|
28
|
+
__exportStar(require("./root-node"), exports);
|
|
29
|
+
__exportStar(require("./util"), exports);
|
|
14
30
|
//# 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":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,kDAAgC;AAChC,6CAA2B;AAC3B,gEAA8C;AAC9C,uDAAqC;AACrC,qDAAmC;AACnC,sDAAoC;AACpC,kDAAgC;AAChC,8CAA4B;AAC5B,yDAAuC;AACvC,4CAA0B;AAC1B,8CAA4B;AAC5B,yCAAuB"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InternalNode = void 0;
|
|
4
|
+
const branches_1 = require("./branches");
|
|
5
|
+
const parents_1 = require("./parents");
|
|
6
|
+
const abstract_node_1 = require("./abstract-node");
|
|
7
|
+
class InternalNode extends abstract_node_1.AbstractNode {
|
|
5
8
|
constructor(level, rootNode, parent) {
|
|
6
9
|
super(level, rootNode, 'InternalNode');
|
|
7
|
-
this.branches = new Branches(this);
|
|
8
|
-
this.parents = new Parents(this);
|
|
10
|
+
this.branches = new branches_1.Branches(this);
|
|
11
|
+
this.parents = new parents_1.Parents(this);
|
|
9
12
|
this.parents.add(parent);
|
|
10
13
|
}
|
|
11
14
|
/**
|
|
@@ -39,4 +42,5 @@ export class InternalNode extends AbstractNode {
|
|
|
39
42
|
return false;
|
|
40
43
|
}
|
|
41
44
|
}
|
|
45
|
+
exports.InternalNode = InternalNode;
|
|
42
46
|
//# sourceMappingURL=internal-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-node.js","sourceRoot":"","sources":["../../src/internal-node.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"internal-node.js","sourceRoot":"","sources":["../../src/internal-node.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AACtC,uCAAoC;AAEpC,mDAA+C;AAG/C,MAAa,YAAa,SAAQ,4BAAY;IAI1C,YACI,KAAa,EACb,QAAkB,EAClB,MAAmB;QAEnB,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QARpC,aAAQ,GAAa,IAAI,mBAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,YAAO,GAAG,IAAI,iBAAO,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;AApDD,oCAoDC"}
|
package/dist/lib/leaf-node.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LeafNode = void 0;
|
|
4
|
+
const parents_1 = require("./parents");
|
|
5
|
+
const abstract_node_1 = require("./abstract-node");
|
|
6
|
+
const util_1 = require("./util");
|
|
7
|
+
class LeafNode extends abstract_node_1.AbstractNode {
|
|
5
8
|
constructor(level, rootNode, value, parent) {
|
|
6
9
|
super(level, rootNode, 'LeafNode');
|
|
7
10
|
this.value = value;
|
|
8
|
-
this.parents = new Parents(this);
|
|
11
|
+
this.parents = new parents_1.Parents(this);
|
|
9
12
|
this.parents.add(parent);
|
|
10
13
|
}
|
|
11
14
|
removeIfValueEquals(value) {
|
|
@@ -16,7 +19,7 @@ export class LeafNode extends AbstractNode {
|
|
|
16
19
|
const parents = this.parents.getAll();
|
|
17
20
|
parents.forEach(parent => {
|
|
18
21
|
const branchKey = parent.branches.getKeyOfNode(this);
|
|
19
|
-
const otherBranch = parent.branches.getBranch(oppositeBoolean(branchKey));
|
|
22
|
+
const otherBranch = parent.branches.getBranch((0, util_1.oppositeBoolean)(branchKey));
|
|
20
23
|
this.parents.remove(parent);
|
|
21
24
|
parent.branches.setBranch(branchKey, otherBranch);
|
|
22
25
|
if (parent.isInternalNode()) {
|
|
@@ -26,4 +29,5 @@ export class LeafNode extends AbstractNode {
|
|
|
26
29
|
return true;
|
|
27
30
|
}
|
|
28
31
|
}
|
|
32
|
+
exports.LeafNode = LeafNode;
|
|
29
33
|
//# sourceMappingURL=leaf-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaf-node.js","sourceRoot":"","sources":["../../src/leaf-node.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"leaf-node.js","sourceRoot":"","sources":["../../src/leaf-node.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,mDAA+C;AAG/C,iCAAyC;AAGzC,MAAa,QAAS,SAAQ,4BAAY;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,iBAAO,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,IAAA,sBAAe,EAAC,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;AAnCD,4BAmCC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nodeToString = exports.bddToMinimalString = void 0;
|
|
4
|
+
const string_format_1 = require("./string-format");
|
|
5
|
+
const string_format_2 = require("./string-format");
|
|
6
|
+
function bddToMinimalString(bdd) {
|
|
4
7
|
let ret = '';
|
|
5
|
-
let currentCharCode = FIRST_CHAR_CODE_FOR_ID;
|
|
8
|
+
let currentCharCode = string_format_2.FIRST_CHAR_CODE_FOR_ID;
|
|
6
9
|
// add leaf node count
|
|
7
10
|
const leafNodeAmount = bdd.getLeafNodes().length;
|
|
8
11
|
if (leafNodeAmount > 99) {
|
|
@@ -22,11 +25,12 @@ export function bddToMinimalString(bdd) {
|
|
|
22
25
|
});
|
|
23
26
|
return ret;
|
|
24
27
|
}
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
exports.bddToMinimalString = bddToMinimalString;
|
|
29
|
+
function nodeToString(node, idByNode, lastCode) {
|
|
30
|
+
const nextId = (0, string_format_1.getNextCharId)(lastCode);
|
|
27
31
|
switch (node.type) {
|
|
28
32
|
case 'LeafNode':
|
|
29
|
-
const valueChar = getCharOfValue(node.asLeafNode().value);
|
|
33
|
+
const valueChar = (0, string_format_1.getCharOfValue)(node.asLeafNode().value);
|
|
30
34
|
return {
|
|
31
35
|
id: nextId.char,
|
|
32
36
|
nextCode: nextId.nextCode,
|
|
@@ -38,7 +42,7 @@ export function nodeToString(node, idByNode, lastCode) {
|
|
|
38
42
|
return {
|
|
39
43
|
id: nextId.char,
|
|
40
44
|
nextCode: nextId.nextCode,
|
|
41
|
-
str: nextId.char + branch0Id + branch1Id + getCharOfLevel(node.level)
|
|
45
|
+
str: nextId.char + branch0Id + branch1Id + (0, string_format_1.getCharOfLevel)(node.level)
|
|
42
46
|
};
|
|
43
47
|
case 'RootNode':
|
|
44
48
|
const branch0IdRoot = idByNode.get(node.asRootNode().branches.getBranch('0'));
|
|
@@ -46,10 +50,11 @@ export function nodeToString(node, idByNode, lastCode) {
|
|
|
46
50
|
return {
|
|
47
51
|
id: nextId.char,
|
|
48
52
|
nextCode: nextId.nextCode,
|
|
49
|
-
str: '' + branch0IdRoot + branch1IdRoot + getCharOfLevel(node.level)
|
|
53
|
+
str: '' + branch0IdRoot + branch1IdRoot + (0, string_format_1.getCharOfLevel)(node.level)
|
|
50
54
|
};
|
|
51
55
|
default:
|
|
52
56
|
throw new Error('unknown node type');
|
|
53
57
|
}
|
|
54
58
|
}
|
|
59
|
+
exports.nodeToString = nodeToString;
|
|
55
60
|
//# 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":"AAEA,
|
|
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,13 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.nodeToSimpleBddNode = exports.bddToSimpleBdd = void 0;
|
|
1
4
|
/**
|
|
2
5
|
* @recursive
|
|
3
6
|
*/
|
|
4
|
-
|
|
7
|
+
function bddToSimpleBdd(bdd) {
|
|
5
8
|
return nodeToSimpleBddNode(bdd);
|
|
6
9
|
}
|
|
10
|
+
exports.bddToSimpleBdd = bddToSimpleBdd;
|
|
7
11
|
/**
|
|
8
12
|
* @recursive
|
|
9
13
|
*/
|
|
10
|
-
|
|
14
|
+
function nodeToSimpleBddNode(node) {
|
|
11
15
|
const branch0 = node.branches.getBranch('0');
|
|
12
16
|
const branch1 = node.branches.getBranch('1');
|
|
13
17
|
return {
|
|
@@ -16,4 +20,5 @@ export function nodeToSimpleBddNode(node) {
|
|
|
16
20
|
1: branch1.isLeafNode() ? branch1.asLeafNode().value : nodeToSimpleBddNode(branch1),
|
|
17
21
|
};
|
|
18
22
|
}
|
|
23
|
+
exports.nodeToSimpleBddNode = nodeToSimpleBddNode;
|
|
19
24
|
//# 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":"AAOA;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"bdd-to-simple-bdd.js","sourceRoot":"","sources":["../../../src/minimal-string/bdd-to-simple-bdd.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAa;IACxC,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAFD,wCAEC;AAGD;;GAEG;AACH,SAAgB,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;AAZD,kDAYC"}
|
|
@@ -1,6 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./bdd-to-minimal-string"), exports);
|
|
18
|
+
__exportStar(require("./minimal-string-to-simple-bdd"), exports);
|
|
19
|
+
__exportStar(require("./resolve-with-simple-bdd"), exports);
|
|
20
|
+
__exportStar(require("./string-format"), exports);
|
|
21
|
+
__exportStar(require("./bdd-to-simple-bdd"), exports);
|
|
6
22
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/minimal-string/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/minimal-string/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC;AACxC,iEAA+C;AAC/C,4DAA0C;AAC1C,kDAAgC;AAChC,sDAAoC"}
|
|
@@ -1,27 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.minimalStringToSimpleBdd = void 0;
|
|
4
|
+
const util_1 = require("../util");
|
|
5
|
+
const string_format_1 = require("./string-format");
|
|
6
|
+
function minimalStringToSimpleBdd(str) {
|
|
4
7
|
const nodesById = new Map();
|
|
5
8
|
// parse leaf nodes
|
|
6
9
|
const leafNodeAmount = parseInt(str.charAt(0) + str.charAt(1), 10);
|
|
7
10
|
const lastLeafNodeChar = (2 + leafNodeAmount * 2);
|
|
8
11
|
const leafNodeChars = str.substring(2, lastLeafNodeChar);
|
|
9
|
-
const leafNodeChunks = splitStringToChunks(leafNodeChars, 2);
|
|
12
|
+
const leafNodeChunks = (0, util_1.splitStringToChunks)(leafNodeChars, 2);
|
|
10
13
|
for (let i = 0; i < leafNodeChunks.length; i++) {
|
|
11
14
|
const chunk = leafNodeChunks[i];
|
|
12
15
|
const id = chunk.charAt(0);
|
|
13
|
-
const value = getNumberOfChar(chunk.charAt(1));
|
|
16
|
+
const value = (0, string_format_1.getNumberOfChar)(chunk.charAt(1));
|
|
14
17
|
nodesById.set(id, value);
|
|
15
18
|
}
|
|
16
19
|
// parse internal nodes
|
|
17
20
|
const internalNodeChars = str.substring(lastLeafNodeChar, str.length - 3);
|
|
18
|
-
const internalNodeChunks = splitStringToChunks(internalNodeChars, 4);
|
|
21
|
+
const internalNodeChunks = (0, util_1.splitStringToChunks)(internalNodeChars, 4);
|
|
19
22
|
for (let i = 0; i < internalNodeChunks.length; i++) {
|
|
20
23
|
const chunk = internalNodeChunks[i];
|
|
21
24
|
const id = chunk.charAt(0);
|
|
22
25
|
const idOf0Branch = chunk.charAt(1);
|
|
23
26
|
const idOf1Branch = chunk.charAt(2);
|
|
24
|
-
const level = getNumberOfChar(chunk.charAt(3));
|
|
27
|
+
const level = (0, string_format_1.getNumberOfChar)(chunk.charAt(3));
|
|
25
28
|
if (!nodesById.has(idOf0Branch)) {
|
|
26
29
|
throw new Error('missing node with id ' + idOf0Branch);
|
|
27
30
|
}
|
|
@@ -41,7 +44,7 @@ export function minimalStringToSimpleBdd(str) {
|
|
|
41
44
|
const last3 = str.slice(-3);
|
|
42
45
|
const idOf0 = last3.charAt(0);
|
|
43
46
|
const idOf1 = last3.charAt(1);
|
|
44
|
-
const levelOfRoot = getNumberOfChar(last3.charAt(2));
|
|
47
|
+
const levelOfRoot = (0, string_format_1.getNumberOfChar)(last3.charAt(2));
|
|
45
48
|
const nodeOf0 = nodesById.get(idOf0);
|
|
46
49
|
const nodeOf1 = nodesById.get(idOf1);
|
|
47
50
|
const rootNode = {
|
|
@@ -51,4 +54,5 @@ export function minimalStringToSimpleBdd(str) {
|
|
|
51
54
|
};
|
|
52
55
|
return rootNode;
|
|
53
56
|
}
|
|
57
|
+
exports.minimalStringToSimpleBdd = minimalStringToSimpleBdd;
|
|
54
58
|
//# 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":"AAIA,
|
|
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,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveWithSimpleBdd = void 0;
|
|
4
|
+
const util_1 = require("../util");
|
|
5
|
+
function resolveWithSimpleBdd(simpleBdd, fns, input) {
|
|
3
6
|
let currentNode = simpleBdd;
|
|
4
7
|
let currentLevel = simpleBdd.l;
|
|
5
8
|
while (true) {
|
|
6
9
|
const booleanResult = fns[currentLevel](input);
|
|
7
|
-
const branchKey = booleanToBooleanString(booleanResult);
|
|
10
|
+
const branchKey = (0, util_1.booleanToBooleanString)(booleanResult);
|
|
8
11
|
currentNode = currentNode[branchKey];
|
|
9
12
|
if (typeof currentNode === 'number' || typeof currentNode === 'string') {
|
|
10
13
|
return currentNode;
|
|
@@ -14,4 +17,5 @@ export function resolveWithSimpleBdd(simpleBdd, fns, input) {
|
|
|
14
17
|
}
|
|
15
18
|
}
|
|
16
19
|
}
|
|
20
|
+
exports.resolveWithSimpleBdd = resolveWithSimpleBdd;
|
|
17
21
|
//# 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":"AAKA,
|
|
1
|
+
{"version":3,"file":"resolve-with-simple-bdd.js","sourceRoot":"","sources":["../../../src/minimal-string/resolve-with-simple-bdd.ts"],"names":[],"mappings":";;;AAKA,kCAAiD;AAEjD,SAAgB,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,IAAA,6BAAsB,EAAC,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;AAjBD,oDAiBC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
/*
|
|
2
3
|
let t = 0;
|
|
3
4
|
while (t < 10000) {
|
|
@@ -6,6 +7,8 @@ while (t < 10000) {
|
|
|
6
7
|
t++;
|
|
7
8
|
}
|
|
8
9
|
*/
|
|
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;
|
|
9
12
|
/*
|
|
10
13
|
|
|
11
14
|
To have a really small string representation, we have to hack some stuff
|
|
@@ -26,21 +29,24 @@ Rules for the string:
|
|
|
26
29
|
|
|
27
30
|
*/
|
|
28
31
|
// we use this because 39 is the quotes which causes problems
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const charCode = CHAR_CODE_OFFSET + level;
|
|
32
|
+
exports.CHAR_CODE_OFFSET = 40; // String.fromCharCode(33) === ')'
|
|
33
|
+
function getCharOfLevel(level) {
|
|
34
|
+
const charCode = exports.CHAR_CODE_OFFSET + level;
|
|
32
35
|
return String.fromCharCode(charCode);
|
|
33
36
|
}
|
|
34
|
-
|
|
37
|
+
exports.getCharOfLevel = getCharOfLevel;
|
|
38
|
+
function getNumberOfChar(char) {
|
|
35
39
|
const charCode = char.charCodeAt(0);
|
|
36
|
-
return charCode - CHAR_CODE_OFFSET;
|
|
40
|
+
return charCode - exports.CHAR_CODE_OFFSET;
|
|
37
41
|
}
|
|
38
|
-
|
|
39
|
-
|
|
42
|
+
exports.getNumberOfChar = getNumberOfChar;
|
|
43
|
+
function getCharOfValue(value) {
|
|
44
|
+
const charCode = exports.CHAR_CODE_OFFSET + value;
|
|
40
45
|
return String.fromCharCode(charCode);
|
|
41
46
|
}
|
|
42
|
-
|
|
43
|
-
|
|
47
|
+
exports.getCharOfValue = getCharOfValue;
|
|
48
|
+
exports.FIRST_CHAR_CODE_FOR_ID = 97; // String.fromCharCode(97) === 'a'
|
|
49
|
+
function getNextCharId(lastCode) {
|
|
44
50
|
// jump these codes because they look strange
|
|
45
51
|
if (lastCode >= 128 && lastCode <= 160) {
|
|
46
52
|
lastCode = 161;
|
|
@@ -51,4 +57,5 @@ export function getNextCharId(lastCode) {
|
|
|
51
57
|
nextCode: lastCode + 1
|
|
52
58
|
};
|
|
53
59
|
}
|
|
60
|
+
exports.getNextCharId = getNextCharId;
|
|
54
61
|
//# sourceMappingURL=string-format.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"string-format.js","sourceRoot":"","sources":["../../../src/minimal-string/string-format.ts"],"names":[],"mappings":"AAAA;;;;;;;EAOE
|
|
1
|
+
{"version":3,"file":"string-format.js","sourceRoot":"","sources":["../../../src/minimal-string/string-format.ts"],"names":[],"mappings":";AAAA;;;;;;;EAOE;;;AAEF;;;;;;;;;;;;;;;;;;EAkBE;AAEF,6DAA6D;AAChD,QAAA,gBAAgB,GAAG,EAAE,CAAC,CAAC,kCAAkC;AAGtE,SAAgB,cAAc,CAAC,KAAa;IACxC,MAAM,QAAQ,GAAG,wBAAgB,GAAG,KAAK,CAAC;IAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAHD,wCAGC;AAED,SAAgB,eAAe,CAAC,IAAY;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,QAAQ,GAAG,wBAAgB,CAAC;AACvC,CAAC;AAHD,0CAGC;AAED,SAAgB,cAAc,CAAC,KAAa;IACxC,MAAM,QAAQ,GAAG,wBAAgB,GAAG,KAAK,CAAC;IAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAHD,wCAGC;AAGY,QAAA,sBAAsB,GAAG,EAAE,CAAC,CAAC,kCAAkC;AAE5E,SAAgB,aAAa,CAAC,QAAgB;IAK1C,6CAA6C;IAC7C,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,EAAE;QACpC,QAAQ,GAAG,GAAG,CAAC;KAClB;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO;QACH,IAAI;QACJ,QAAQ,EAAE,QAAQ,GAAG,CAAC;KACzB,CAAC;AACN,CAAC;AAfD,sCAeC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getArrayWithIndexes = exports.changeKeyOrder = exports.shuffleBooleanOrdering = exports.optimizeBruteForce = exports.defaultCompareResults = void 0;
|
|
4
|
+
const create_bdd_from_truth_table_1 = require("./create-bdd-from-truth-table");
|
|
5
|
+
const util_1 = require("./util");
|
|
3
6
|
/**
|
|
4
7
|
* returns the bdd with less nodes
|
|
5
8
|
*/
|
|
6
|
-
|
|
9
|
+
const defaultCompareResults = function (a, b) {
|
|
7
10
|
if (a.countNodes() <= b.countNodes()) {
|
|
8
11
|
return a;
|
|
9
12
|
}
|
|
@@ -11,13 +14,14 @@ export const defaultCompareResults = function (a, b) {
|
|
|
11
14
|
return b;
|
|
12
15
|
}
|
|
13
16
|
};
|
|
17
|
+
exports.defaultCompareResults = defaultCompareResults;
|
|
14
18
|
/**
|
|
15
19
|
* optimises the ordering of the boolean functions
|
|
16
20
|
* by randomly sorting the array
|
|
17
21
|
* and checking the resulting bdd
|
|
18
22
|
*/
|
|
19
|
-
|
|
20
|
-
const initialBdd = createBddFromTruthTable(truthTable);
|
|
23
|
+
async function optimizeBruteForce({ truthTable, iterations = Infinity, onBetterBdd = () => null, compareResults = exports.defaultCompareResults, afterBddCreation = () => null, log = false }) {
|
|
24
|
+
const initialBdd = (0, create_bdd_from_truth_table_1.createBddFromTruthTable)(truthTable);
|
|
21
25
|
afterBddCreation(initialBdd);
|
|
22
26
|
initialBdd.minimize();
|
|
23
27
|
let currentBestResult = {
|
|
@@ -36,10 +40,10 @@ export async function optimizeBruteForce({ truthTable, iterations = Infinity, on
|
|
|
36
40
|
console.log('optimizeBruteForce() itterate once');
|
|
37
41
|
}
|
|
38
42
|
const shuffledOrdering = shuffleBooleanOrdering(truthTable);
|
|
39
|
-
const nextBdd = createBddFromTruthTable(shuffledOrdering.newTable);
|
|
43
|
+
const nextBdd = (0, create_bdd_from_truth_table_1.createBddFromTruthTable)(shuffledOrdering.newTable);
|
|
40
44
|
// change the levels of each node
|
|
41
45
|
const newNodesByLevel = new Map();
|
|
42
|
-
const lastLevel = lastOfArray(nextBdd.getLevels());
|
|
46
|
+
const lastLevel = (0, util_1.lastOfArray)(nextBdd.getLevels());
|
|
43
47
|
const newSortedLevels = [];
|
|
44
48
|
nextBdd.getLevels()
|
|
45
49
|
.filter(level => level !== lastLevel)
|
|
@@ -84,10 +88,11 @@ export async function optimizeBruteForce({ truthTable, iterations = Infinity, on
|
|
|
84
88
|
}
|
|
85
89
|
return currentBestResult;
|
|
86
90
|
}
|
|
87
|
-
|
|
88
|
-
|
|
91
|
+
exports.optimizeBruteForce = optimizeBruteForce;
|
|
92
|
+
function shuffleBooleanOrdering(truthTable) {
|
|
93
|
+
const firstKey = (0, util_1.firstKeyOfMap)(truthTable);
|
|
89
94
|
const arrayWithIndexes = getArrayWithIndexes(firstKey.length);
|
|
90
|
-
const shuffled = shuffleArray(arrayWithIndexes);
|
|
95
|
+
const shuffled = (0, util_1.shuffleArray)(arrayWithIndexes);
|
|
91
96
|
const mapping = {};
|
|
92
97
|
const mappingBeforeToAfter = {};
|
|
93
98
|
shuffled.forEach((indexBefore, indexAfter) => {
|
|
@@ -105,7 +110,8 @@ export function shuffleBooleanOrdering(truthTable) {
|
|
|
105
110
|
mappingBeforeToAfter
|
|
106
111
|
};
|
|
107
112
|
}
|
|
108
|
-
|
|
113
|
+
exports.shuffleBooleanOrdering = shuffleBooleanOrdering;
|
|
114
|
+
function changeKeyOrder(oldKey, mappingBeforeToAfter) {
|
|
109
115
|
const chars = oldKey
|
|
110
116
|
.split('')
|
|
111
117
|
.map((char, indexBefore) => {
|
|
@@ -120,7 +126,8 @@ export function changeKeyOrder(oldKey, mappingBeforeToAfter) {
|
|
|
120
126
|
.join('');
|
|
121
127
|
return chars;
|
|
122
128
|
}
|
|
123
|
-
|
|
129
|
+
exports.changeKeyOrder = changeKeyOrder;
|
|
130
|
+
function getArrayWithIndexes(size) {
|
|
124
131
|
const ret = [];
|
|
125
132
|
let last = 0;
|
|
126
133
|
while (last < size) {
|
|
@@ -129,4 +136,5 @@ export function getArrayWithIndexes(size) {
|
|
|
129
136
|
}
|
|
130
137
|
return ret;
|
|
131
138
|
}
|
|
139
|
+
exports.getArrayWithIndexes = getArrayWithIndexes;
|
|
132
140
|
//# sourceMappingURL=optimize-brute-force.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"optimize-brute-force.js","sourceRoot":"","sources":["../../src/optimize-brute-force.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"optimize-brute-force.js","sourceRoot":"","sources":["../../src/optimize-brute-force.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/parents.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Parents = void 0;
|
|
1
4
|
/**
|
|
2
5
|
* represents the parents of a single node
|
|
3
6
|
*/
|
|
4
|
-
|
|
7
|
+
class Parents {
|
|
5
8
|
constructor(node) {
|
|
6
9
|
this.node = node;
|
|
7
10
|
this.parents = new Set();
|
|
@@ -35,4 +38,5 @@ export class Parents {
|
|
|
35
38
|
return this.parents.size;
|
|
36
39
|
}
|
|
37
40
|
}
|
|
41
|
+
exports.Parents = Parents;
|
|
38
42
|
//# sourceMappingURL=parents.js.map
|
package/dist/lib/parents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parents.js","sourceRoot":"","sources":["../../src/parents.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"parents.js","sourceRoot":"","sources":["../../src/parents.ts"],"names":[],"mappings":";;;AAKA;;GAEG;AACH,MAAa,OAAO;IAIhB,YACW,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QAHpB,YAAO,GAAqB,IAAI,GAAG,EAAE,CAAC;IAI1C,CAAC;IAEE,MAAM,CAAC,IAAiB;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SACtB;IACL,CAAC;IAEM,MAAM;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,GAAG,CAAC,IAAiB;QACxB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC5E;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,GAAG,CAAC,IAAiB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ;QACJ,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;CACJ;AA1CD,0BA0CC"}
|
package/dist/lib/root-node.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RootNode = void 0;
|
|
4
|
+
const abstract_node_1 = require("./abstract-node");
|
|
5
|
+
const branches_1 = require("./branches");
|
|
6
|
+
const util_1 = require("./util");
|
|
7
|
+
const minimal_string_1 = require("./minimal-string");
|
|
8
|
+
class RootNode extends abstract_node_1.AbstractNode {
|
|
6
9
|
constructor() {
|
|
7
10
|
super(0, null, 'RootNode');
|
|
8
|
-
this.branches = new Branches(this);
|
|
11
|
+
this.branches = new branches_1.Branches(this);
|
|
9
12
|
this.levels = [];
|
|
10
13
|
this.nodesByLevel = new Map();
|
|
11
14
|
this.levels.push(0);
|
|
@@ -61,7 +64,7 @@ export class RootNode extends AbstractNode {
|
|
|
61
64
|
console.log('minimize() itterate once');
|
|
62
65
|
}
|
|
63
66
|
let successCount = 0;
|
|
64
|
-
let lastLevel = lastOfArray(this.getLevels());
|
|
67
|
+
let lastLevel = (0, util_1.lastOfArray)(this.getLevels());
|
|
65
68
|
while (lastLevel > 0) {
|
|
66
69
|
const nodes = this.getNodesOfLevel(lastLevel);
|
|
67
70
|
if (logState) {
|
|
@@ -111,7 +114,7 @@ export class RootNode extends AbstractNode {
|
|
|
111
114
|
}
|
|
112
115
|
}
|
|
113
116
|
getLeafNodes() {
|
|
114
|
-
const lastLevel = lastOfArray(this.getLevels());
|
|
117
|
+
const lastLevel = (0, util_1.lastOfArray)(this.getLevels());
|
|
115
118
|
const leafNodes = this.getNodesOfLevel(lastLevel).reverse();
|
|
116
119
|
return leafNodes;
|
|
117
120
|
}
|
|
@@ -140,7 +143,7 @@ export class RootNode extends AbstractNode {
|
|
|
140
143
|
let currentNode = this;
|
|
141
144
|
while (true) {
|
|
142
145
|
const booleanResult = fns[currentNode.level](booleanFunctionInput);
|
|
143
|
-
const branchKey = booleanToBooleanString(booleanResult);
|
|
146
|
+
const branchKey = (0, util_1.booleanToBooleanString)(booleanResult);
|
|
144
147
|
currentNode = currentNode.branches.getBranch(branchKey);
|
|
145
148
|
if (currentNode.isLeafNode()) {
|
|
146
149
|
return currentNode.asLeafNode().value;
|
|
@@ -148,7 +151,8 @@ export class RootNode extends AbstractNode {
|
|
|
148
151
|
}
|
|
149
152
|
}
|
|
150
153
|
toSimpleBdd() {
|
|
151
|
-
return bddToSimpleBdd(this);
|
|
154
|
+
return (0, minimal_string_1.bddToSimpleBdd)(this);
|
|
152
155
|
}
|
|
153
156
|
}
|
|
157
|
+
exports.RootNode = RootNode;
|
|
154
158
|
//# sourceMappingURL=root-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-node.js","sourceRoot":"","sources":["../../src/root-node.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"root-node.js","sourceRoot":"","sources":["../../src/root-node.ts"],"names":[],"mappings":";;;AAAA,mDAA+C;AAC/C,yCAAsC;AAOtC,iCAGgB;AAGhB,qDAAkD;AAElD,MAAa,QAAS,SAAQ,4BAAY;IAMtC;QACI,KAAK,CACD,CAAC,EACD,IAAI,EACJ,UAAU,CACb,CAAC;QAVC,aAAQ,GAAa,IAAI,mBAAQ,CAAC,IAAI,CAAC,CAAC;QAExC,WAAM,GAAa,EAAE,CAAC;QACtB,iBAAY,GAAmC,IAAI,GAAG,EAAE,CAAC;QAQ5D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,SAAS,GAAsB,IAAI,GAAG,EAAE,CAAC;QAC/C,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAEM,OAAO,CAAC,IAAiB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;QAED,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,IAAiB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAqB,CAAC;QAClE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3D;QACD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAEO,oBAAoB,CAAC,KAAa;QACtC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;SAC3C;IACL,CAAC;IAEM,SAAS;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,eAAe,CAAC,KAAa;QAChC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAqB,CAAC;QAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEM,UAAU;QACb,IAAI,GAAG,GAAW,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACvD,GAAG,GAAG,GAAG,GAAG,WAAW,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,WAAoB,KAAK;QAC9B,oDAAoD;QACpD,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,OAAO,CAAC,IAAI,EAAE;YACV,IAAI,QAAQ,EAAE;gBACV,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;aAC3C;YACD,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,SAAS,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC9C,OAAO,SAAS,GAAG,CAAC,EAAE;gBAClB,MAAM,KAAK,GAAmB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAmB,CAAC;gBAChF,IAAI,QAAQ,EAAE;oBACV,OAAO,CAAC,GAAG,CACP,2BAA2B,GAAG,SAAS;wBACvC,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CACrC,CAAC;oBACF,sBAAsB;iBACzB;gBAED,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACtB,SAAS,EAAE,CAAC;oBAEZ,gDAAgD;oBAChD,IAAI,QAAQ,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,EAAE;wBACpC,OAAO,CAAC,GAAG,CACP,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAChC,CAAC;qBACL;oBACD,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;wBACnB,4CAA4C;wBAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,oBAAoB,EAAE,CAAC;wBAC/D,IAAI,aAAa,EAAE;4BACf,YAAY,EAAE,CAAC;yBAClB;qBACJ;oBACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;wBACxC,MAAM,OAAO,GAAG,IAAoB,CAAC;wBACrC,MAAM,aAAa,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;wBACnD,IAAI,eAAe,GAAG,KAAK,CAAC;wBAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;4BAClB,+CAA+C;4BAC/C,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;yBACzD;wBACD,IAAI,aAAa,IAAI,eAAe,EAAE;4BAClC,YAAY,EAAE,CAAC;yBAClB;qBACJ;iBACJ;gBACD,SAAS,EAAE,CAAC;aACf;YACD,IAAI,YAAY,KAAK,CAAC,EAAE;gBACpB,iCAAiC;gBACjC,IAAI,GAAG,IAAI,CAAC;aACf;iBAAM;gBACH,IAAI,QAAQ,EAAE;oBACV,OAAO,CAAC,GAAG,CACP,kCAAkC;wBAClC,YAAY,GAAG,gBAAgB,CAClC,CAAC;iBACL;aACJ;SACJ;IACL,CAAC;IAEM,YAAY;QACf,MAAM,SAAS,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,EAAgB,CAAC;QAC1E,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,yBAAyB,CAAC,aAAqB;QAC3C,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,OAAO,CAAC,IAAI,EAAE;YACV,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;gBAC5D,IAAI,OAAO,EAAE;oBACT,YAAY,EAAE,CAAC;iBAClB;aACJ;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEhB,IAAI,YAAY,KAAK,CAAC,EAAE;gBACpB,IAAI,GAAG,IAAI,CAAC;aACf;SACJ;IACL,CAAC;IAED,OAAO,CACH,GAAsB,EACtB,oBAAyB;QAEzB,IAAI,WAAW,GAAiB,IAAI,CAAC;QACrC,OAAO,IAAI,EAAE;YACT,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,IAAA,6BAAsB,EAAC,aAAa,CAAC,CAAC;YACxD,WAAW,GAAI,WAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACzE,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE;gBAC1B,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;aACzC;SACJ;IACL,CAAC;IAEM,WAAW;QACd,OAAO,IAAA,+BAAc,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACJ;AAlLD,4BAkLC"}
|
package/dist/lib/types.js
CHANGED
package/dist/lib/util.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.splitStringToChunks = exports.lastOfArray = exports.shuffleArray = exports.firstKeyOfMap = exports.getNextStateSet = exports.maxBinaryWithLength = exports.minBinaryWithLength = exports.binaryToDecimal = exports.oppositeBinary = exports.decimalToPaddedBinary = exports.nextNodeId = exports.lastChar = exports.oppositeBoolean = exports.booleanToBooleanString = exports.booleanStringToBoolean = void 0;
|
|
4
|
+
function booleanStringToBoolean(str) {
|
|
2
5
|
if (str === '1') {
|
|
3
6
|
return true;
|
|
4
7
|
}
|
|
@@ -6,7 +9,8 @@ export function booleanStringToBoolean(str) {
|
|
|
6
9
|
return false;
|
|
7
10
|
}
|
|
8
11
|
}
|
|
9
|
-
|
|
12
|
+
exports.booleanStringToBoolean = booleanStringToBoolean;
|
|
13
|
+
function booleanToBooleanString(b) {
|
|
10
14
|
if (b) {
|
|
11
15
|
return '1';
|
|
12
16
|
}
|
|
@@ -14,7 +18,8 @@ export function booleanToBooleanString(b) {
|
|
|
14
18
|
return '0';
|
|
15
19
|
}
|
|
16
20
|
}
|
|
17
|
-
|
|
21
|
+
exports.booleanToBooleanString = booleanToBooleanString;
|
|
22
|
+
function oppositeBoolean(input) {
|
|
18
23
|
if (input === '1') {
|
|
19
24
|
return '0';
|
|
20
25
|
}
|
|
@@ -22,9 +27,11 @@ export function oppositeBoolean(input) {
|
|
|
22
27
|
return '1';
|
|
23
28
|
}
|
|
24
29
|
}
|
|
25
|
-
|
|
30
|
+
exports.oppositeBoolean = oppositeBoolean;
|
|
31
|
+
function lastChar(str) {
|
|
26
32
|
return str.slice(-1);
|
|
27
33
|
}
|
|
34
|
+
exports.lastChar = lastChar;
|
|
28
35
|
/**
|
|
29
36
|
* @link https://stackoverflow.com/a/1349426
|
|
30
37
|
*/
|
|
@@ -39,20 +46,22 @@ function makeid(length = 6) {
|
|
|
39
46
|
}
|
|
40
47
|
const nodeIdPrefix = makeid(4);
|
|
41
48
|
let lastIdGen = 0;
|
|
42
|
-
|
|
49
|
+
function nextNodeId() {
|
|
43
50
|
const ret = 'node_' + nodeIdPrefix + '_' + lastIdGen;
|
|
44
51
|
lastIdGen++;
|
|
45
52
|
return ret;
|
|
46
53
|
}
|
|
54
|
+
exports.nextNodeId = nextNodeId;
|
|
47
55
|
/**
|
|
48
56
|
* @link https://stackoverflow.com/a/16155417
|
|
49
57
|
*/
|
|
50
|
-
|
|
58
|
+
function decimalToPaddedBinary(decimal, padding) {
|
|
51
59
|
const binary = (decimal >>> 0).toString(2);
|
|
52
60
|
const padded = binary.padStart(padding, '0');
|
|
53
61
|
return padded;
|
|
54
62
|
}
|
|
55
|
-
|
|
63
|
+
exports.decimalToPaddedBinary = decimalToPaddedBinary;
|
|
64
|
+
function oppositeBinary(i) {
|
|
56
65
|
if (i === '1') {
|
|
57
66
|
return '0';
|
|
58
67
|
}
|
|
@@ -63,47 +72,56 @@ export function oppositeBinary(i) {
|
|
|
63
72
|
throw new Error('non-binary given');
|
|
64
73
|
}
|
|
65
74
|
}
|
|
66
|
-
|
|
75
|
+
exports.oppositeBinary = oppositeBinary;
|
|
76
|
+
function binaryToDecimal(binary) {
|
|
67
77
|
return parseInt(binary, 2);
|
|
68
78
|
}
|
|
69
|
-
|
|
79
|
+
exports.binaryToDecimal = binaryToDecimal;
|
|
80
|
+
function minBinaryWithLength(length) {
|
|
70
81
|
return new Array(length).fill(0).map(() => '0').join('');
|
|
71
82
|
}
|
|
72
|
-
|
|
83
|
+
exports.minBinaryWithLength = minBinaryWithLength;
|
|
84
|
+
function maxBinaryWithLength(length) {
|
|
73
85
|
return new Array(length).fill(0).map(() => '1').join('');
|
|
74
86
|
}
|
|
75
|
-
|
|
87
|
+
exports.maxBinaryWithLength = maxBinaryWithLength;
|
|
88
|
+
function getNextStateSet(stateSet) {
|
|
76
89
|
const decimal = binaryToDecimal(stateSet);
|
|
77
90
|
const increase = decimal + 1;
|
|
78
91
|
const binary = decimalToPaddedBinary(increase, stateSet.length);
|
|
79
92
|
return binary;
|
|
80
93
|
}
|
|
81
|
-
|
|
94
|
+
exports.getNextStateSet = getNextStateSet;
|
|
95
|
+
function firstKeyOfMap(map) {
|
|
82
96
|
const iterator1 = map.keys();
|
|
83
97
|
return iterator1.next().value;
|
|
84
98
|
}
|
|
99
|
+
exports.firstKeyOfMap = firstKeyOfMap;
|
|
85
100
|
/**
|
|
86
101
|
* Shuffles array in place. ES6 version
|
|
87
102
|
* @link https://stackoverflow.com/a/6274381
|
|
88
103
|
*/
|
|
89
|
-
|
|
104
|
+
function shuffleArray(a) {
|
|
90
105
|
for (let i = a.length - 1; i > 0; i--) {
|
|
91
106
|
const j = Math.floor(Math.random() * (i + 1));
|
|
92
107
|
[a[i], a[j]] = [a[j], a[i]];
|
|
93
108
|
}
|
|
94
109
|
return a;
|
|
95
110
|
}
|
|
96
|
-
|
|
111
|
+
exports.shuffleArray = shuffleArray;
|
|
112
|
+
function lastOfArray(ar) {
|
|
97
113
|
return ar[ar.length - 1];
|
|
98
114
|
}
|
|
115
|
+
exports.lastOfArray = lastOfArray;
|
|
99
116
|
/**
|
|
100
117
|
* @link https://stackoverflow.com/a/6259536
|
|
101
118
|
*/
|
|
102
|
-
|
|
119
|
+
function splitStringToChunks(str, chunkSize) {
|
|
103
120
|
const chunks = [];
|
|
104
121
|
for (let i = 0, charsLength = str.length; i < charsLength; i += chunkSize) {
|
|
105
122
|
chunks.push(str.substring(i, i + chunkSize));
|
|
106
123
|
}
|
|
107
124
|
return chunks;
|
|
108
125
|
}
|
|
126
|
+
exports.splitStringToChunks = splitStringToChunks;
|
|
109
127
|
//# sourceMappingURL=util.js.map
|
package/dist/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "binary-decision-diagram",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "A library to create, minimize and optimize binary decision diagrams",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"binary decision diagram",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"scripts": {
|
|
32
32
|
"lint": "tslint --project .",
|
|
33
33
|
"lint:fix": "tslint --project . --fix",
|
|
34
|
-
"transpile": "tsc -p ./ && echo '# transpile es5 (require) sucess!'",
|
|
35
|
-
"transpile:es": "tsc -p ./ --
|
|
34
|
+
"transpile": "tsc -p ./ --module commonjs && echo '# transpile es5 (require) sucess!'",
|
|
35
|
+
"transpile:es": "tsc -p ./ --outDir ./dist/es && echo '# transpile es (modules) sucess!'",
|
|
36
36
|
"build": "rimraf -r ./dist && npm run transpile && npm run transpile:es",
|
|
37
37
|
"test": "mocha -r ts-node/register test/unit/index.test.ts --timeout 40000 --bail"
|
|
38
38
|
},
|