binary-decision-diagram 1.3.1 → 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 +22 -0
- package/README.md +3 -2
- package/dist/es/abstract-node.d.ts +1 -1
- package/dist/es/abstract-node.js +45 -51
- package/dist/es/abstract-node.js.map +1 -1
- package/dist/es/branches.d.ts +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.d.ts +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.d.ts +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/index.d.ts +7 -1
- package/dist/es/index.js.map +1 -1
- package/dist/es/internal-node.d.ts +1 -1
- package/dist/es/internal-node.js +15 -33
- package/dist/es/internal-node.js.map +1 -1
- package/dist/es/leaf-node.d.ts +1 -1
- package/dist/es/leaf-node.js +14 -32
- 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 +5 -5
- package/dist/es/optimize-brute-force.js +88 -186
- package/dist/es/optimize-brute-force.js.map +1 -1
- package/dist/es/parents.d.ts +1 -1
- package/dist/es/parents.js +19 -47
- package/dist/es/parents.js.map +1 -1
- package/dist/es/root-node.d.ts +1 -1
- package/dist/es/root-node.js +79 -131
- package/dist/es/root-node.js.map +1 -1
- package/dist/es/types.d.ts +9 -9
- package/dist/es/types.js +1 -0
- package/dist/es/util.d.ts +1 -1
- package/dist/es/util.js +21 -39
- package/dist/es/util.js.map +1 -1
- package/dist/lib/abstract-node.d.ts +1 -1
- package/dist/lib/abstract-node.js +48 -56
- package/dist/lib/abstract-node.js.map +1 -1
- package/dist/lib/branches.d.ts +1 -1
- package/dist/lib/branches.js +21 -26
- package/dist/lib/branches.js.map +1 -1
- package/dist/lib/create-bdd-from-truth-table.d.ts +1 -1
- package/dist/lib/create-bdd-from-truth-table.js +24 -65
- package/dist/lib/create-bdd-from-truth-table.js.map +1 -1
- package/dist/lib/ensure-correct-bdd.js +27 -32
- package/dist/lib/ensure-correct-bdd.js.map +1 -1
- package/dist/lib/fill-truth-table.d.ts +1 -1
- package/dist/lib/fill-truth-table.js +6 -9
- package/dist/lib/fill-truth-table.js.map +1 -1
- package/dist/lib/find-similar-node.js +4 -7
- package/dist/lib/find-similar-node.js.map +1 -1
- package/dist/lib/index.d.ts +7 -1
- package/dist/lib/index.js +13 -18
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/internal-node.d.ts +1 -1
- package/dist/lib/internal-node.js +18 -38
- package/dist/lib/internal-node.js.map +1 -1
- package/dist/lib/leaf-node.d.ts +1 -1
- package/dist/lib/leaf-node.js +17 -37
- package/dist/lib/leaf-node.js.map +1 -1
- package/dist/lib/minimal-string/bdd-to-minimal-string.js +21 -25
- package/dist/lib/minimal-string/bdd-to-minimal-string.js.map +1 -1
- package/dist/lib/minimal-string/bdd-to-simple-bdd.js +4 -8
- package/dist/lib/minimal-string/bdd-to-simple-bdd.js.map +1 -1
- package/dist/lib/minimal-string/index.js +5 -10
- package/dist/lib/minimal-string/index.js.map +1 -1
- package/dist/lib/minimal-string/minimal-string-to-simple-bdd.js +30 -33
- 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 -9
- package/dist/lib/minimal-string/resolve-with-simple-bdd.js.map +1 -1
- package/dist/lib/minimal-string/string-format.js +12 -18
- package/dist/lib/minimal-string/string-format.js.map +1 -1
- package/dist/lib/optimize-brute-force.d.ts +5 -5
- package/dist/lib/optimize-brute-force.js +93 -197
- package/dist/lib/optimize-brute-force.js.map +1 -1
- package/dist/lib/parents.d.ts +1 -1
- package/dist/lib/parents.js +19 -49
- package/dist/lib/parents.js.map +1 -1
- package/dist/lib/root-node.d.ts +1 -1
- package/dist/lib/root-node.js +84 -138
- 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.d.ts +1 -1
- package/dist/lib/util.js +36 -71
- package/dist/lib/util.js.map +1 -1
- package/package.json +16 -11
- package/renovate.json +3 -2
- package/src/abstract-node.ts +1 -1
- package/src/branches.ts +1 -2
- package/src/create-bdd-from-truth-table.ts +1 -1
- package/src/ensure-correct-bdd.ts +1 -1
- package/src/fill-truth-table.ts +1 -1
- package/src/index.ts +19 -1
- package/src/internal-node.ts +1 -1
- package/src/leaf-node.ts +1 -1
- package/src/optimize-brute-force.ts +1 -1
- package/src/parents.ts +1 -1
- package/src/root-node.ts +1 -1
- package/src/types.ts +1 -1
- package/src/util.ts +1 -1
- package/tsconfig.json +2 -2
- package/.travis.yml +0 -13
package/dist/es/root-node.js
CHANGED
|
@@ -1,140 +1,101 @@
|
|
|
1
|
-
var __extends = (this && this.__extends) || (function () {
|
|
2
|
-
var extendStatics = function (d, b) {
|
|
3
|
-
extendStatics = Object.setPrototypeOf ||
|
|
4
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
-
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
|
6
|
-
return extendStatics(d, b);
|
|
7
|
-
};
|
|
8
|
-
return function (d, b) {
|
|
9
|
-
extendStatics(d, b);
|
|
10
|
-
function __() { this.constructor = d; }
|
|
11
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
-
};
|
|
13
|
-
})();
|
|
14
|
-
var __values = (this && this.__values) || function(o) {
|
|
15
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
16
|
-
if (m) return m.call(o);
|
|
17
|
-
if (o && typeof o.length === "number") return {
|
|
18
|
-
next: function () {
|
|
19
|
-
if (o && i >= o.length) o = void 0;
|
|
20
|
-
return { value: o && o[i++], done: !o };
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
24
|
-
};
|
|
25
1
|
import { AbstractNode } from './abstract-node';
|
|
26
2
|
import { Branches } from './branches';
|
|
27
3
|
import { lastOfArray, booleanToBooleanString } from './util';
|
|
28
4
|
import { bddToSimpleBdd } from './minimal-string';
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
_this.nodesByLevel.set(0, level0Set);
|
|
40
|
-
return _this;
|
|
5
|
+
export class RootNode extends AbstractNode {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(0, null, 'RootNode');
|
|
8
|
+
this.branches = new Branches(this);
|
|
9
|
+
this.levels = [];
|
|
10
|
+
this.nodesByLevel = new Map();
|
|
11
|
+
this.levels.push(0);
|
|
12
|
+
const level0Set = new Set();
|
|
13
|
+
level0Set.add(this);
|
|
14
|
+
this.nodesByLevel.set(0, level0Set);
|
|
41
15
|
}
|
|
42
|
-
|
|
43
|
-
|
|
16
|
+
addNode(node) {
|
|
17
|
+
const level = node.level;
|
|
44
18
|
if (!this.levels.includes(level)) {
|
|
45
19
|
this.levels.push(level);
|
|
46
20
|
}
|
|
47
21
|
this.ensureLevelSetExists(level);
|
|
48
|
-
|
|
22
|
+
const set = this.nodesByLevel.get(level);
|
|
49
23
|
set === null || set === void 0 ? void 0 : set.add(node);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
24
|
+
}
|
|
25
|
+
removeNode(node) {
|
|
26
|
+
const set = this.nodesByLevel.get(node.level);
|
|
53
27
|
if (!set.has(node)) {
|
|
54
28
|
throw new Error('removed non-existing node ' + node.id);
|
|
55
29
|
}
|
|
56
30
|
set.delete(node);
|
|
57
|
-
}
|
|
58
|
-
|
|
31
|
+
}
|
|
32
|
+
ensureLevelSetExists(level) {
|
|
59
33
|
if (!this.nodesByLevel.has(level)) {
|
|
60
34
|
this.nodesByLevel.set(level, new Set());
|
|
61
35
|
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return Array.from(this.levels).sort(
|
|
65
|
-
}
|
|
66
|
-
|
|
36
|
+
}
|
|
37
|
+
getLevels() {
|
|
38
|
+
return Array.from(this.levels).sort((a, b) => a - b);
|
|
39
|
+
}
|
|
40
|
+
getNodesOfLevel(level) {
|
|
67
41
|
this.ensureLevelSetExists(level);
|
|
68
|
-
|
|
42
|
+
const set = this.nodesByLevel.get(level);
|
|
69
43
|
return Array.from(set);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
var nodesAmount = _this.getNodesOfLevel(level).length;
|
|
44
|
+
}
|
|
45
|
+
countNodes() {
|
|
46
|
+
let ret = 0;
|
|
47
|
+
this.getLevels().forEach(level => {
|
|
48
|
+
const nodesAmount = this.getNodesOfLevel(level).length;
|
|
76
49
|
ret = ret + nodesAmount;
|
|
77
50
|
});
|
|
78
51
|
return ret;
|
|
79
|
-
}
|
|
52
|
+
}
|
|
80
53
|
/**
|
|
81
54
|
* applies the reduction rules to the whole bdd
|
|
82
55
|
*/
|
|
83
|
-
|
|
84
|
-
var e_1, _a;
|
|
85
|
-
if (logState === void 0) { logState = false; }
|
|
56
|
+
minimize(logState = false) {
|
|
86
57
|
// console.log('minimize(): START ###############');
|
|
87
|
-
|
|
58
|
+
let done = false;
|
|
88
59
|
while (!done) {
|
|
89
60
|
if (logState) {
|
|
90
61
|
console.log('minimize() itterate once');
|
|
91
62
|
}
|
|
92
|
-
|
|
93
|
-
|
|
63
|
+
let successCount = 0;
|
|
64
|
+
let lastLevel = lastOfArray(this.getLevels());
|
|
94
65
|
while (lastLevel > 0) {
|
|
95
|
-
|
|
66
|
+
const nodes = this.getNodesOfLevel(lastLevel);
|
|
96
67
|
if (logState) {
|
|
97
68
|
console.log('minimize() run for level ' + lastLevel +
|
|
98
69
|
' with ' + nodes.length + ' nodes');
|
|
99
70
|
// console.dir(nodes);
|
|
100
71
|
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
72
|
+
let nodeCount = 0;
|
|
73
|
+
for (const node of nodes) {
|
|
74
|
+
nodeCount++;
|
|
75
|
+
// do not run that often because it is expensive
|
|
76
|
+
if (logState && nodeCount % 4000 === 0) {
|
|
77
|
+
console.log('minimize() node #' + node.id);
|
|
78
|
+
}
|
|
79
|
+
if (node.isLeafNode()) {
|
|
80
|
+
// console.log('have leaf node ' + node.id);
|
|
81
|
+
const reductionDone = node.asLeafNode().applyEliminationRule();
|
|
82
|
+
if (reductionDone) {
|
|
83
|
+
successCount++;
|
|
109
84
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
85
|
+
}
|
|
86
|
+
if (!node.deleted && node.isInternalNode()) {
|
|
87
|
+
const useNode = node;
|
|
88
|
+
const reductionDone = useNode.applyReductionRule();
|
|
89
|
+
let eliminationDone = false;
|
|
90
|
+
if (!useNode.deleted) {
|
|
91
|
+
// not might now be deleted from reduction-rule
|
|
92
|
+
eliminationDone = useNode.applyEliminationRule(nodes);
|
|
116
93
|
}
|
|
117
|
-
if (
|
|
118
|
-
|
|
119
|
-
var reductionDone = useNode.applyReductionRule();
|
|
120
|
-
var eliminationDone = false;
|
|
121
|
-
if (!useNode.deleted) {
|
|
122
|
-
// not might now be deleted from reduction-rule
|
|
123
|
-
eliminationDone = useNode.applyEliminationRule(nodes);
|
|
124
|
-
}
|
|
125
|
-
if (reductionDone || eliminationDone) {
|
|
126
|
-
successCount++;
|
|
127
|
-
}
|
|
94
|
+
if (reductionDone || eliminationDone) {
|
|
95
|
+
successCount++;
|
|
128
96
|
}
|
|
129
97
|
}
|
|
130
98
|
}
|
|
131
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
132
|
-
finally {
|
|
133
|
-
try {
|
|
134
|
-
if (nodes_1_1 && !nodes_1_1.done && (_a = nodes_1.return)) _a.call(nodes_1);
|
|
135
|
-
}
|
|
136
|
-
finally { if (e_1) throw e_1.error; }
|
|
137
|
-
}
|
|
138
99
|
lastLevel--;
|
|
139
100
|
}
|
|
140
101
|
if (successCount === 0) {
|
|
@@ -148,59 +109,46 @@ var RootNode = /** @class */ (function (_super) {
|
|
|
148
109
|
}
|
|
149
110
|
}
|
|
150
111
|
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
112
|
+
}
|
|
113
|
+
getLeafNodes() {
|
|
114
|
+
const lastLevel = lastOfArray(this.getLevels());
|
|
115
|
+
const leafNodes = this.getNodesOfLevel(lastLevel).reverse();
|
|
155
116
|
return leafNodes;
|
|
156
|
-
}
|
|
117
|
+
}
|
|
157
118
|
/**
|
|
158
119
|
* strips all leaf-nodes
|
|
159
120
|
* with the given value
|
|
160
121
|
*/
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
var done = false;
|
|
122
|
+
removeIrrelevantLeafNodes(leafNodeValue) {
|
|
123
|
+
let done = false;
|
|
164
124
|
while (!done) {
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
if (removed) {
|
|
172
|
-
countRemoved++;
|
|
173
|
-
}
|
|
125
|
+
let countRemoved = 0;
|
|
126
|
+
const leafNodes = this.getLeafNodes();
|
|
127
|
+
for (const leafNode of leafNodes) {
|
|
128
|
+
const removed = leafNode.removeIfValueEquals(leafNodeValue);
|
|
129
|
+
if (removed) {
|
|
130
|
+
countRemoved++;
|
|
174
131
|
}
|
|
175
132
|
}
|
|
176
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
177
|
-
finally {
|
|
178
|
-
try {
|
|
179
|
-
if (leafNodes_1_1 && !leafNodes_1_1.done && (_a = leafNodes_1.return)) _a.call(leafNodes_1);
|
|
180
|
-
}
|
|
181
|
-
finally { if (e_2) throw e_2.error; }
|
|
182
|
-
}
|
|
183
133
|
this.minimize();
|
|
184
134
|
if (countRemoved === 0) {
|
|
185
135
|
done = true;
|
|
186
136
|
}
|
|
187
137
|
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
|
|
138
|
+
}
|
|
139
|
+
resolve(fns, booleanFunctionInput) {
|
|
140
|
+
let currentNode = this;
|
|
191
141
|
while (true) {
|
|
192
|
-
|
|
193
|
-
|
|
142
|
+
const booleanResult = fns[currentNode.level](booleanFunctionInput);
|
|
143
|
+
const branchKey = booleanToBooleanString(booleanResult);
|
|
194
144
|
currentNode = currentNode.branches.getBranch(branchKey);
|
|
195
145
|
if (currentNode.isLeafNode()) {
|
|
196
146
|
return currentNode.asLeafNode().value;
|
|
197
147
|
}
|
|
198
148
|
}
|
|
199
|
-
}
|
|
200
|
-
|
|
149
|
+
}
|
|
150
|
+
toSimpleBdd() {
|
|
201
151
|
return bddToSimpleBdd(this);
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
}(AbstractNode));
|
|
205
|
-
export { RootNode };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
206
154
|
//# sourceMappingURL=root-node.js.map
|
package/dist/es/root-node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-node.js","sourceRoot":"","sources":["../../src/root-node.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"root-node.js","sourceRoot":"","sources":["../../src/root-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAOtC,OAAO,EACH,WAAW,EACX,sBAAsB,EACzB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,QAAS,SAAQ,YAAY;IAMtC;QACI,KAAK,CACD,CAAC,EACD,IAAI,EACJ,UAAU,CACb,CAAC;QAVC,aAAQ,GAAa,IAAI,QAAQ,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,WAAW,CAAC,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,WAAW,CAAC,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,sBAAsB,CAAC,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,cAAc,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACJ"}
|
package/dist/es/types.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { LeafNode } from './leaf-node';
|
|
2
2
|
import { InternalNode } from './internal-node';
|
|
3
3
|
import { RootNode } from './root-node';
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
4
|
+
export type NodeType = 'LeafNode' | 'InternalNode' | 'RootNode';
|
|
5
|
+
export type NonLeafNode = InternalNode | RootNode;
|
|
6
|
+
export type NonRootNode = InternalNode | LeafNode;
|
|
7
|
+
export type TruthTable = Map<string, number>;
|
|
8
|
+
export type BooleanString = '0' | '1';
|
|
9
|
+
export type ResolverFunction<T> = (i: T) => boolean;
|
|
10
|
+
export type ResolverFunctions<T = any> = {
|
|
11
11
|
[k: number]: ResolverFunction<T>;
|
|
12
12
|
};
|
|
13
|
-
export
|
|
13
|
+
export type SimpleBddLeafNode = number;
|
|
14
14
|
/**
|
|
15
15
|
* a simple bdd is a json-representation
|
|
16
16
|
* which could be parsed from the minimal string
|
|
17
17
|
* use this to have great performance
|
|
18
18
|
* when resolving values
|
|
19
19
|
*/
|
|
20
|
-
export
|
|
20
|
+
export type SimpleBdd = {
|
|
21
21
|
0: SimpleBdd | SimpleBddLeafNode;
|
|
22
22
|
1: SimpleBdd | SimpleBddLeafNode;
|
|
23
23
|
l: number;
|
package/dist/es/types.js
CHANGED
package/dist/es/util.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BooleanString } from './types';
|
|
1
|
+
import type { BooleanString } from './types';
|
|
2
2
|
export declare function booleanStringToBoolean(str: BooleanString): boolean;
|
|
3
3
|
export declare function booleanToBooleanString(b: boolean): BooleanString;
|
|
4
4
|
export declare function oppositeBoolean(input: BooleanString): BooleanString;
|
package/dist/es/util.js
CHANGED
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
2
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
3
|
-
if (!m) return o;
|
|
4
|
-
var i = m.call(o), r, ar = [], e;
|
|
5
|
-
try {
|
|
6
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
7
|
-
}
|
|
8
|
-
catch (error) { e = { error: error }; }
|
|
9
|
-
finally {
|
|
10
|
-
try {
|
|
11
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
12
|
-
}
|
|
13
|
-
finally { if (e) throw e.error; }
|
|
14
|
-
}
|
|
15
|
-
return ar;
|
|
16
|
-
};
|
|
17
1
|
export function booleanStringToBoolean(str) {
|
|
18
2
|
if (str === '1') {
|
|
19
3
|
return true;
|
|
@@ -44,20 +28,19 @@ export function lastChar(str) {
|
|
|
44
28
|
/**
|
|
45
29
|
* @link https://stackoverflow.com/a/1349426
|
|
46
30
|
*/
|
|
47
|
-
function makeid(length) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
for (var i = 0; i < length; i++) {
|
|
31
|
+
function makeid(length = 6) {
|
|
32
|
+
let result = '';
|
|
33
|
+
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
34
|
+
const charactersLength = characters.length;
|
|
35
|
+
for (let i = 0; i < length; i++) {
|
|
53
36
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
54
37
|
}
|
|
55
38
|
return result;
|
|
56
39
|
}
|
|
57
|
-
|
|
58
|
-
|
|
40
|
+
const nodeIdPrefix = makeid(4);
|
|
41
|
+
let lastIdGen = 0;
|
|
59
42
|
export function nextNodeId() {
|
|
60
|
-
|
|
43
|
+
const ret = 'node_' + nodeIdPrefix + '_' + lastIdGen;
|
|
61
44
|
lastIdGen++;
|
|
62
45
|
return ret;
|
|
63
46
|
}
|
|
@@ -65,8 +48,8 @@ export function nextNodeId() {
|
|
|
65
48
|
* @link https://stackoverflow.com/a/16155417
|
|
66
49
|
*/
|
|
67
50
|
export function decimalToPaddedBinary(decimal, padding) {
|
|
68
|
-
|
|
69
|
-
|
|
51
|
+
const binary = (decimal >>> 0).toString(2);
|
|
52
|
+
const padded = binary.padStart(padding, '0');
|
|
70
53
|
return padded;
|
|
71
54
|
}
|
|
72
55
|
export function oppositeBinary(i) {
|
|
@@ -84,19 +67,19 @@ export function binaryToDecimal(binary) {
|
|
|
84
67
|
return parseInt(binary, 2);
|
|
85
68
|
}
|
|
86
69
|
export function minBinaryWithLength(length) {
|
|
87
|
-
return new Array(length).fill(0).map(
|
|
70
|
+
return new Array(length).fill(0).map(() => '0').join('');
|
|
88
71
|
}
|
|
89
72
|
export function maxBinaryWithLength(length) {
|
|
90
|
-
return new Array(length).fill(0).map(
|
|
73
|
+
return new Array(length).fill(0).map(() => '1').join('');
|
|
91
74
|
}
|
|
92
75
|
export function getNextStateSet(stateSet) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
76
|
+
const decimal = binaryToDecimal(stateSet);
|
|
77
|
+
const increase = decimal + 1;
|
|
78
|
+
const binary = decimalToPaddedBinary(increase, stateSet.length);
|
|
96
79
|
return binary;
|
|
97
80
|
}
|
|
98
81
|
export function firstKeyOfMap(map) {
|
|
99
|
-
|
|
82
|
+
const iterator1 = map.keys();
|
|
100
83
|
return iterator1.next().value;
|
|
101
84
|
}
|
|
102
85
|
/**
|
|
@@ -104,10 +87,9 @@ export function firstKeyOfMap(map) {
|
|
|
104
87
|
* @link https://stackoverflow.com/a/6274381
|
|
105
88
|
*/
|
|
106
89
|
export function shuffleArray(a) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
_a = __read([a[j], a[i]], 2), a[i] = _a[0], a[j] = _a[1];
|
|
90
|
+
for (let i = a.length - 1; i > 0; i--) {
|
|
91
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
92
|
+
[a[i], a[j]] = [a[j], a[i]];
|
|
111
93
|
}
|
|
112
94
|
return a;
|
|
113
95
|
}
|
|
@@ -118,8 +100,8 @@ export function lastOfArray(ar) {
|
|
|
118
100
|
* @link https://stackoverflow.com/a/6259536
|
|
119
101
|
*/
|
|
120
102
|
export function splitStringToChunks(str, chunkSize) {
|
|
121
|
-
|
|
122
|
-
for (
|
|
103
|
+
const chunks = [];
|
|
104
|
+
for (let i = 0, charsLength = str.length; i < charsLength; i += chunkSize) {
|
|
123
105
|
chunks.push(str.substring(i, i + chunkSize));
|
|
124
106
|
}
|
|
125
107
|
return chunks;
|
package/dist/es/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|