binary-decision-diagram 2.0.1 → 3.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/{es → src}/abstract-node.d.ts +4 -4
- package/dist/{es → src}/abstract-node.js +7 -4
- package/dist/src/abstract-node.js.map +1 -0
- package/dist/{es → src}/branches.d.ts +2 -2
- package/dist/{es → src}/branches.js +3 -2
- package/dist/src/branches.js.map +1 -0
- package/dist/src/create-bdd-from-truth-table.d.ts +3 -0
- package/dist/{es → src}/create-bdd-from-truth-table.js +4 -4
- package/dist/src/create-bdd-from-truth-table.js.map +1 -0
- package/dist/{es → src}/ensure-correct-bdd.d.ts +2 -2
- package/dist/{es → src}/ensure-correct-bdd.js +1 -1
- package/dist/src/ensure-correct-bdd.js.map +1 -0
- package/dist/{lib → src}/fill-truth-table.d.ts +1 -1
- package/dist/{es → src}/fill-truth-table.js +1 -1
- package/dist/{es → src}/fill-truth-table.js.map +1 -1
- package/dist/{lib → src}/find-similar-node.d.ts +1 -1
- package/dist/src/index.d.ts +14 -0
- package/dist/src/index.js +14 -0
- package/dist/src/index.js.map +1 -0
- package/dist/{es → src}/internal-node.d.ts +5 -5
- package/dist/{es → src}/internal-node.js +5 -5
- package/dist/{es → src}/internal-node.js.map +1 -1
- package/dist/{es → src}/leaf-node.d.ts +4 -4
- package/dist/{es → src}/leaf-node.js +5 -4
- package/dist/src/leaf-node.js.map +1 -0
- package/dist/{es → src}/minimal-string/bdd-to-minimal-string.d.ts +2 -2
- package/dist/{es → src}/minimal-string/bdd-to-minimal-string.js +2 -2
- package/dist/{es → src}/minimal-string/bdd-to-minimal-string.js.map +1 -1
- package/dist/{lib → src}/minimal-string/bdd-to-simple-bdd.d.ts +3 -3
- package/dist/src/minimal-string/index.d.ts +5 -0
- package/dist/src/minimal-string/index.js +6 -0
- package/dist/{es → src}/minimal-string/index.js.map +1 -1
- package/dist/{es → src}/minimal-string/minimal-string-to-simple-bdd.d.ts +1 -1
- package/dist/{es → src}/minimal-string/minimal-string-to-simple-bdd.js +2 -2
- package/dist/{es → src}/minimal-string/minimal-string-to-simple-bdd.js.map +1 -1
- package/dist/{es → src}/minimal-string/resolve-with-simple-bdd.d.ts +1 -1
- package/dist/{es → src}/minimal-string/resolve-with-simple-bdd.js +1 -1
- package/dist/{es → src}/minimal-string/resolve-with-simple-bdd.js.map +1 -1
- package/dist/{lib → src}/optimize-brute-force.d.ts +2 -2
- package/dist/{es → src}/optimize-brute-force.js +2 -2
- package/dist/{es → src}/optimize-brute-force.js.map +1 -1
- package/dist/{es → src}/parents.d.ts +1 -1
- package/dist/{es → src}/parents.js +2 -1
- package/dist/src/parents.js.map +1 -0
- package/dist/{lib → src}/root-node.d.ts +4 -4
- package/dist/{es → src}/root-node.js +8 -8
- package/dist/src/root-node.js.map +1 -0
- package/dist/{es → src}/types.d.ts +3 -3
- package/dist/{lib → src}/util.d.ts +1 -1
- package/package.json +19 -19
- package/src/abstract-node.ts +7 -7
- package/src/branches.ts +2 -2
- package/src/create-bdd-from-truth-table.ts +5 -5
- package/src/ensure-correct-bdd.ts +4 -4
- package/src/fill-truth-table.ts +2 -2
- package/src/find-similar-node.ts +1 -1
- package/src/index.ts +14 -32
- package/src/internal-node.ts +5 -5
- package/src/leaf-node.ts +6 -6
- package/src/minimal-string/bdd-to-minimal-string.ts +4 -4
- package/src/minimal-string/bdd-to-simple-bdd.ts +4 -4
- package/src/minimal-string/index.ts +5 -5
- package/src/minimal-string/minimal-string-to-simple-bdd.ts +3 -3
- package/src/minimal-string/resolve-with-simple-bdd.ts +2 -2
- package/src/optimize-brute-force.ts +5 -5
- package/src/parents.ts +1 -1
- package/src/root-node.ts +7 -7
- package/src/types.ts +3 -3
- package/src/util.ts +1 -1
- package/.github/workflows/main.yml +0 -22
- package/dist/es/abstract-node.js.map +0 -1
- package/dist/es/branches.js.map +0 -1
- package/dist/es/create-bdd-from-truth-table.d.ts +0 -3
- package/dist/es/create-bdd-from-truth-table.js.map +0 -1
- package/dist/es/ensure-correct-bdd.js.map +0 -1
- package/dist/es/fill-truth-table.d.ts +0 -6
- package/dist/es/find-similar-node.d.ts +0 -7
- package/dist/es/index.d.ts +0 -20
- package/dist/es/index.js +0 -14
- package/dist/es/index.js.map +0 -1
- package/dist/es/leaf-node.js.map +0 -1
- package/dist/es/minimal-string/bdd-to-simple-bdd.d.ts +0 -11
- package/dist/es/minimal-string/index.d.ts +0 -5
- package/dist/es/minimal-string/index.js +0 -6
- package/dist/es/optimize-brute-force.d.ts +0 -43
- package/dist/es/parents.js.map +0 -1
- package/dist/es/root-node.d.ts +0 -28
- package/dist/es/root-node.js.map +0 -1
- package/dist/es/util.d.ts +0 -26
- package/dist/lib/abstract-node.d.ts +0 -33
- package/dist/lib/abstract-node.js +0 -170
- package/dist/lib/abstract-node.js.map +0 -1
- package/dist/lib/branches.d.ts +0 -20
- package/dist/lib/branches.js +0 -75
- package/dist/lib/branches.js.map +0 -1
- package/dist/lib/create-bdd-from-truth-table.d.ts +0 -3
- package/dist/lib/create-bdd-from-truth-table.js +0 -38
- package/dist/lib/create-bdd-from-truth-table.js.map +0 -1
- package/dist/lib/ensure-correct-bdd.d.ts +0 -8
- package/dist/lib/ensure-correct-bdd.js +0 -102
- package/dist/lib/ensure-correct-bdd.js.map +0 -1
- package/dist/lib/fill-truth-table.js +0 -26
- package/dist/lib/fill-truth-table.js.map +0 -1
- package/dist/lib/find-similar-node.js +0 -22
- package/dist/lib/find-similar-node.js.map +0 -1
- package/dist/lib/index.d.ts +0 -20
- package/dist/lib/index.js +0 -30
- package/dist/lib/index.js.map +0 -1
- package/dist/lib/internal-node.d.ts +0 -16
- package/dist/lib/internal-node.js +0 -46
- package/dist/lib/internal-node.js.map +0 -1
- package/dist/lib/leaf-node.d.ts +0 -10
- package/dist/lib/leaf-node.js +0 -33
- package/dist/lib/leaf-node.js.map +0 -1
- package/dist/lib/minimal-string/bdd-to-minimal-string.d.ts +0 -8
- package/dist/lib/minimal-string/bdd-to-minimal-string.js +0 -60
- package/dist/lib/minimal-string/bdd-to-minimal-string.js.map +0 -1
- package/dist/lib/minimal-string/bdd-to-simple-bdd.js +0 -24
- package/dist/lib/minimal-string/bdd-to-simple-bdd.js.map +0 -1
- package/dist/lib/minimal-string/index.d.ts +0 -5
- package/dist/lib/minimal-string/index.js +0 -22
- package/dist/lib/minimal-string/index.js.map +0 -1
- package/dist/lib/minimal-string/minimal-string-to-simple-bdd.d.ts +0 -2
- package/dist/lib/minimal-string/minimal-string-to-simple-bdd.js +0 -58
- package/dist/lib/minimal-string/minimal-string-to-simple-bdd.js.map +0 -1
- package/dist/lib/minimal-string/resolve-with-simple-bdd.d.ts +0 -2
- package/dist/lib/minimal-string/resolve-with-simple-bdd.js +0 -21
- package/dist/lib/minimal-string/resolve-with-simple-bdd.js.map +0 -1
- package/dist/lib/minimal-string/string-format.d.ts +0 -9
- package/dist/lib/minimal-string/string-format.js +0 -61
- package/dist/lib/minimal-string/string-format.js.map +0 -1
- package/dist/lib/optimize-brute-force.js +0 -140
- package/dist/lib/optimize-brute-force.js.map +0 -1
- package/dist/lib/parents.d.ts +0 -15
- package/dist/lib/parents.js +0 -42
- package/dist/lib/parents.js.map +0 -1
- package/dist/lib/root-node.js +0 -158
- package/dist/lib/root-node.js.map +0 -1
- package/dist/lib/types.d.ts +0 -24
- package/dist/lib/types.js +0 -3
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/util.js +0 -127
- package/dist/lib/util.js.map +0 -1
- package/renovate.json +0 -8
- package/test/helper/big-truth-table.json +0 -578
- package/test/helper/test-util.ts +0 -110
- package/test/unit/create-bdd-from-truth-table.test.ts +0 -24
- package/test/unit/find-similar-node.test.ts +0 -53
- package/test/unit/index.test.ts +0 -6
- package/test/unit/minimize.test.ts +0 -145
- package/test/unit/optimize-brute-force.test.ts +0 -114
- package/test/unit/resolve.test.ts +0 -74
- package/test/unit/simple-bdd.test.ts +0 -186
- package/tsconfig.json +0 -38
- package/tslint.json +0 -116
- /package/dist/{es → src}/find-similar-node.js +0 -0
- /package/dist/{es → src}/find-similar-node.js.map +0 -0
- /package/dist/{es → src}/minimal-string/bdd-to-simple-bdd.js +0 -0
- /package/dist/{es → src}/minimal-string/bdd-to-simple-bdd.js.map +0 -0
- /package/dist/{es → src}/minimal-string/string-format.d.ts +0 -0
- /package/dist/{es → src}/minimal-string/string-format.js +0 -0
- /package/dist/{es → src}/minimal-string/string-format.js.map +0 -0
- /package/dist/{es → src}/types.js +0 -0
- /package/dist/{es → src}/types.js.map +0 -0
- /package/dist/{es → src}/util.js +0 -0
- /package/dist/{es → src}/util.js.map +0 -0
package/dist/lib/root-node.js
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
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 {
|
|
9
|
-
constructor() {
|
|
10
|
-
super(0, null, 'RootNode');
|
|
11
|
-
this.branches = new branches_1.Branches(this);
|
|
12
|
-
this.levels = [];
|
|
13
|
-
this.nodesByLevel = new Map();
|
|
14
|
-
this.levels.push(0);
|
|
15
|
-
const level0Set = new Set();
|
|
16
|
-
level0Set.add(this);
|
|
17
|
-
this.nodesByLevel.set(0, level0Set);
|
|
18
|
-
}
|
|
19
|
-
addNode(node) {
|
|
20
|
-
const level = node.level;
|
|
21
|
-
if (!this.levels.includes(level)) {
|
|
22
|
-
this.levels.push(level);
|
|
23
|
-
}
|
|
24
|
-
this.ensureLevelSetExists(level);
|
|
25
|
-
const set = this.nodesByLevel.get(level);
|
|
26
|
-
set === null || set === void 0 ? void 0 : set.add(node);
|
|
27
|
-
}
|
|
28
|
-
removeNode(node) {
|
|
29
|
-
const set = this.nodesByLevel.get(node.level);
|
|
30
|
-
if (!set.has(node)) {
|
|
31
|
-
throw new Error('removed non-existing node ' + node.id);
|
|
32
|
-
}
|
|
33
|
-
set.delete(node);
|
|
34
|
-
}
|
|
35
|
-
ensureLevelSetExists(level) {
|
|
36
|
-
if (!this.nodesByLevel.has(level)) {
|
|
37
|
-
this.nodesByLevel.set(level, new Set());
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
getLevels() {
|
|
41
|
-
return Array.from(this.levels).sort((a, b) => a - b);
|
|
42
|
-
}
|
|
43
|
-
getNodesOfLevel(level) {
|
|
44
|
-
this.ensureLevelSetExists(level);
|
|
45
|
-
const set = this.nodesByLevel.get(level);
|
|
46
|
-
return Array.from(set);
|
|
47
|
-
}
|
|
48
|
-
countNodes() {
|
|
49
|
-
let ret = 0;
|
|
50
|
-
this.getLevels().forEach(level => {
|
|
51
|
-
const nodesAmount = this.getNodesOfLevel(level).length;
|
|
52
|
-
ret = ret + nodesAmount;
|
|
53
|
-
});
|
|
54
|
-
return ret;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* applies the reduction rules to the whole bdd
|
|
58
|
-
*/
|
|
59
|
-
minimize(logState = false) {
|
|
60
|
-
// console.log('minimize(): START ###############');
|
|
61
|
-
let done = false;
|
|
62
|
-
while (!done) {
|
|
63
|
-
if (logState) {
|
|
64
|
-
console.log('minimize() itterate once');
|
|
65
|
-
}
|
|
66
|
-
let successCount = 0;
|
|
67
|
-
let lastLevel = (0, util_1.lastOfArray)(this.getLevels());
|
|
68
|
-
while (lastLevel > 0) {
|
|
69
|
-
const nodes = this.getNodesOfLevel(lastLevel);
|
|
70
|
-
if (logState) {
|
|
71
|
-
console.log('minimize() run for level ' + lastLevel +
|
|
72
|
-
' with ' + nodes.length + ' nodes');
|
|
73
|
-
// console.dir(nodes);
|
|
74
|
-
}
|
|
75
|
-
let nodeCount = 0;
|
|
76
|
-
for (const node of nodes) {
|
|
77
|
-
nodeCount++;
|
|
78
|
-
// do not run that often because it is expensive
|
|
79
|
-
if (logState && nodeCount % 4000 === 0) {
|
|
80
|
-
console.log('minimize() node #' + node.id);
|
|
81
|
-
}
|
|
82
|
-
if (node.isLeafNode()) {
|
|
83
|
-
// console.log('have leaf node ' + node.id);
|
|
84
|
-
const reductionDone = node.asLeafNode().applyEliminationRule();
|
|
85
|
-
if (reductionDone) {
|
|
86
|
-
successCount++;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
if (!node.deleted && node.isInternalNode()) {
|
|
90
|
-
const useNode = node;
|
|
91
|
-
const reductionDone = useNode.applyReductionRule();
|
|
92
|
-
let eliminationDone = false;
|
|
93
|
-
if (!useNode.deleted) {
|
|
94
|
-
// not might now be deleted from reduction-rule
|
|
95
|
-
eliminationDone = useNode.applyEliminationRule(nodes);
|
|
96
|
-
}
|
|
97
|
-
if (reductionDone || eliminationDone) {
|
|
98
|
-
successCount++;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
lastLevel--;
|
|
103
|
-
}
|
|
104
|
-
if (successCount === 0) {
|
|
105
|
-
// could do no more optimisations
|
|
106
|
-
done = true;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
if (logState) {
|
|
110
|
-
console.log('minimize() itteration done with ' +
|
|
111
|
-
successCount + ' minimisations');
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
getLeafNodes() {
|
|
117
|
-
const lastLevel = (0, util_1.lastOfArray)(this.getLevels());
|
|
118
|
-
const leafNodes = this.getNodesOfLevel(lastLevel).reverse();
|
|
119
|
-
return leafNodes;
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* strips all leaf-nodes
|
|
123
|
-
* with the given value
|
|
124
|
-
*/
|
|
125
|
-
removeIrrelevantLeafNodes(leafNodeValue) {
|
|
126
|
-
let done = false;
|
|
127
|
-
while (!done) {
|
|
128
|
-
let countRemoved = 0;
|
|
129
|
-
const leafNodes = this.getLeafNodes();
|
|
130
|
-
for (const leafNode of leafNodes) {
|
|
131
|
-
const removed = leafNode.removeIfValueEquals(leafNodeValue);
|
|
132
|
-
if (removed) {
|
|
133
|
-
countRemoved++;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
this.minimize();
|
|
137
|
-
if (countRemoved === 0) {
|
|
138
|
-
done = true;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
resolve(fns, booleanFunctionInput) {
|
|
143
|
-
let currentNode = this;
|
|
144
|
-
while (true) {
|
|
145
|
-
const booleanResult = fns[currentNode.level](booleanFunctionInput);
|
|
146
|
-
const branchKey = (0, util_1.booleanToBooleanString)(booleanResult);
|
|
147
|
-
currentNode = currentNode.branches.getBranch(branchKey);
|
|
148
|
-
if (currentNode.isLeafNode()) {
|
|
149
|
-
return currentNode.asLeafNode().value;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
toSimpleBdd() {
|
|
154
|
-
return (0, minimal_string_1.bddToSimpleBdd)(this);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
exports.RootNode = RootNode;
|
|
158
|
-
//# sourceMappingURL=root-node.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"root-node.js","sourceRoot":"","sources":["../../src/root-node.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { LeafNode } from './leaf-node';
|
|
2
|
-
import { InternalNode } from './internal-node';
|
|
3
|
-
import { RootNode } from './root-node';
|
|
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
|
-
[k: number]: ResolverFunction<T>;
|
|
12
|
-
};
|
|
13
|
-
export type SimpleBddLeafNode = number;
|
|
14
|
-
/**
|
|
15
|
-
* a simple bdd is a json-representation
|
|
16
|
-
* which could be parsed from the minimal string
|
|
17
|
-
* use this to have great performance
|
|
18
|
-
* when resolving values
|
|
19
|
-
*/
|
|
20
|
-
export type SimpleBdd = {
|
|
21
|
-
0: SimpleBdd | SimpleBddLeafNode;
|
|
22
|
-
1: SimpleBdd | SimpleBddLeafNode;
|
|
23
|
-
l: number;
|
|
24
|
-
};
|
package/dist/lib/types.js
DELETED
package/dist/lib/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
|
package/dist/lib/util.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
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) {
|
|
5
|
-
if (str === '1') {
|
|
6
|
-
return true;
|
|
7
|
-
}
|
|
8
|
-
else {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
}
|
|
12
|
-
exports.booleanStringToBoolean = booleanStringToBoolean;
|
|
13
|
-
function booleanToBooleanString(b) {
|
|
14
|
-
if (b) {
|
|
15
|
-
return '1';
|
|
16
|
-
}
|
|
17
|
-
else {
|
|
18
|
-
return '0';
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.booleanToBooleanString = booleanToBooleanString;
|
|
22
|
-
function oppositeBoolean(input) {
|
|
23
|
-
if (input === '1') {
|
|
24
|
-
return '0';
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
return '1';
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
exports.oppositeBoolean = oppositeBoolean;
|
|
31
|
-
function lastChar(str) {
|
|
32
|
-
return str.slice(-1);
|
|
33
|
-
}
|
|
34
|
-
exports.lastChar = lastChar;
|
|
35
|
-
/**
|
|
36
|
-
* @link https://stackoverflow.com/a/1349426
|
|
37
|
-
*/
|
|
38
|
-
function makeid(length = 6) {
|
|
39
|
-
let result = '';
|
|
40
|
-
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
41
|
-
const charactersLength = characters.length;
|
|
42
|
-
for (let i = 0; i < length; i++) {
|
|
43
|
-
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
|
44
|
-
}
|
|
45
|
-
return result;
|
|
46
|
-
}
|
|
47
|
-
const nodeIdPrefix = makeid(4);
|
|
48
|
-
let lastIdGen = 0;
|
|
49
|
-
function nextNodeId() {
|
|
50
|
-
const ret = 'node_' + nodeIdPrefix + '_' + lastIdGen;
|
|
51
|
-
lastIdGen++;
|
|
52
|
-
return ret;
|
|
53
|
-
}
|
|
54
|
-
exports.nextNodeId = nextNodeId;
|
|
55
|
-
/**
|
|
56
|
-
* @link https://stackoverflow.com/a/16155417
|
|
57
|
-
*/
|
|
58
|
-
function decimalToPaddedBinary(decimal, padding) {
|
|
59
|
-
const binary = (decimal >>> 0).toString(2);
|
|
60
|
-
const padded = binary.padStart(padding, '0');
|
|
61
|
-
return padded;
|
|
62
|
-
}
|
|
63
|
-
exports.decimalToPaddedBinary = decimalToPaddedBinary;
|
|
64
|
-
function oppositeBinary(i) {
|
|
65
|
-
if (i === '1') {
|
|
66
|
-
return '0';
|
|
67
|
-
}
|
|
68
|
-
else if (i === '0') {
|
|
69
|
-
return '1';
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
throw new Error('non-binary given');
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
exports.oppositeBinary = oppositeBinary;
|
|
76
|
-
function binaryToDecimal(binary) {
|
|
77
|
-
return parseInt(binary, 2);
|
|
78
|
-
}
|
|
79
|
-
exports.binaryToDecimal = binaryToDecimal;
|
|
80
|
-
function minBinaryWithLength(length) {
|
|
81
|
-
return new Array(length).fill(0).map(() => '0').join('');
|
|
82
|
-
}
|
|
83
|
-
exports.minBinaryWithLength = minBinaryWithLength;
|
|
84
|
-
function maxBinaryWithLength(length) {
|
|
85
|
-
return new Array(length).fill(0).map(() => '1').join('');
|
|
86
|
-
}
|
|
87
|
-
exports.maxBinaryWithLength = maxBinaryWithLength;
|
|
88
|
-
function getNextStateSet(stateSet) {
|
|
89
|
-
const decimal = binaryToDecimal(stateSet);
|
|
90
|
-
const increase = decimal + 1;
|
|
91
|
-
const binary = decimalToPaddedBinary(increase, stateSet.length);
|
|
92
|
-
return binary;
|
|
93
|
-
}
|
|
94
|
-
exports.getNextStateSet = getNextStateSet;
|
|
95
|
-
function firstKeyOfMap(map) {
|
|
96
|
-
const iterator1 = map.keys();
|
|
97
|
-
return iterator1.next().value;
|
|
98
|
-
}
|
|
99
|
-
exports.firstKeyOfMap = firstKeyOfMap;
|
|
100
|
-
/**
|
|
101
|
-
* Shuffles array in place. ES6 version
|
|
102
|
-
* @link https://stackoverflow.com/a/6274381
|
|
103
|
-
*/
|
|
104
|
-
function shuffleArray(a) {
|
|
105
|
-
for (let i = a.length - 1; i > 0; i--) {
|
|
106
|
-
const j = Math.floor(Math.random() * (i + 1));
|
|
107
|
-
[a[i], a[j]] = [a[j], a[i]];
|
|
108
|
-
}
|
|
109
|
-
return a;
|
|
110
|
-
}
|
|
111
|
-
exports.shuffleArray = shuffleArray;
|
|
112
|
-
function lastOfArray(ar) {
|
|
113
|
-
return ar[ar.length - 1];
|
|
114
|
-
}
|
|
115
|
-
exports.lastOfArray = lastOfArray;
|
|
116
|
-
/**
|
|
117
|
-
* @link https://stackoverflow.com/a/6259536
|
|
118
|
-
*/
|
|
119
|
-
function splitStringToChunks(str, chunkSize) {
|
|
120
|
-
const chunks = [];
|
|
121
|
-
for (let i = 0, charsLength = str.length; i < charsLength; i += chunkSize) {
|
|
122
|
-
chunks.push(str.substring(i, i + chunkSize));
|
|
123
|
-
}
|
|
124
|
-
return chunks;
|
|
125
|
-
}
|
|
126
|
-
exports.splitStringToChunks = splitStringToChunks;
|
|
127
|
-
//# sourceMappingURL=util.js.map
|
package/dist/lib/util.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|