data-structure-typed 1.34.7 → 1.34.9
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/.eslintrc.js +1 -0
- package/CHANGELOG.md +1 -1
- package/CONTRIBUTING.md +0 -0
- package/README.md +8 -8
- package/dist/data-structures/binary-tree/aa-tree.js +2 -5
- package/dist/data-structures/binary-tree/aa-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/abstract-binary-tree.js +314 -457
- package/dist/data-structures/binary-tree/abstract-binary-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/avl-tree.js +64 -90
- package/dist/data-structures/binary-tree/avl-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/b-tree.js +2 -5
- package/dist/data-structures/binary-tree/b-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/binary-indexed-tree.js +17 -22
- package/dist/data-structures/binary-tree/binary-indexed-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/binary-tree.js +12 -31
- package/dist/data-structures/binary-tree/binary-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/bst.js +157 -244
- package/dist/data-structures/binary-tree/bst.js.map +1 -1
- package/dist/data-structures/binary-tree/rb-tree.js +20 -44
- package/dist/data-structures/binary-tree/rb-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/segment-tree.js +80 -122
- package/dist/data-structures/binary-tree/segment-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/splay-tree.js +2 -5
- package/dist/data-structures/binary-tree/splay-tree.js.map +1 -1
- package/dist/data-structures/binary-tree/tree-multiset.js +168 -239
- package/dist/data-structures/binary-tree/tree-multiset.js.map +1 -1
- package/dist/data-structures/binary-tree/two-three-tree.js +2 -5
- package/dist/data-structures/binary-tree/two-three-tree.js.map +1 -1
- package/dist/data-structures/graph/abstract-graph.js +351 -585
- package/dist/data-structures/graph/abstract-graph.js.map +1 -1
- package/dist/data-structures/graph/directed-graph.js +152 -282
- package/dist/data-structures/graph/directed-graph.js.map +1 -1
- package/dist/data-structures/graph/map-graph.js +47 -88
- package/dist/data-structures/graph/map-graph.js.map +1 -1
- package/dist/data-structures/graph/undirected-graph.js +91 -180
- package/dist/data-structures/graph/undirected-graph.js.map +1 -1
- package/dist/data-structures/hash/coordinate-map.js +23 -45
- package/dist/data-structures/hash/coordinate-map.js.map +1 -1
- package/dist/data-structures/hash/coordinate-set.js +20 -42
- package/dist/data-structures/hash/coordinate-set.js.map +1 -1
- package/dist/data-structures/hash/hash-map.js +85 -247
- package/dist/data-structures/hash/hash-map.js.map +1 -1
- package/dist/data-structures/hash/hash-table.js +87 -128
- package/dist/data-structures/hash/hash-table.js.map +1 -1
- package/dist/data-structures/hash/pair.js +2 -5
- package/dist/data-structures/hash/pair.js.map +1 -1
- package/dist/data-structures/hash/tree-map.js +2 -5
- package/dist/data-structures/hash/tree-map.js.map +1 -1
- package/dist/data-structures/hash/tree-set.js +2 -5
- package/dist/data-structures/hash/tree-set.js.map +1 -1
- package/dist/data-structures/heap/heap.js +56 -80
- package/dist/data-structures/heap/heap.js.map +1 -1
- package/dist/data-structures/heap/max-heap.js +8 -26
- package/dist/data-structures/heap/max-heap.js.map +1 -1
- package/dist/data-structures/heap/min-heap.js +8 -26
- package/dist/data-structures/heap/min-heap.js.map +1 -1
- package/dist/data-structures/linked-list/doubly-linked-list.js +149 -218
- package/dist/data-structures/linked-list/doubly-linked-list.js.map +1 -1
- package/dist/data-structures/linked-list/singly-linked-list.js +119 -218
- package/dist/data-structures/linked-list/singly-linked-list.js.map +1 -1
- package/dist/data-structures/linked-list/skip-linked-list.js +50 -70
- package/dist/data-structures/linked-list/skip-linked-list.js.map +1 -1
- package/dist/data-structures/matrix/matrix.js +7 -8
- package/dist/data-structures/matrix/matrix.js.map +1 -1
- package/dist/data-structures/matrix/matrix2d.js +57 -70
- package/dist/data-structures/matrix/matrix2d.js.map +1 -1
- package/dist/data-structures/matrix/navigator.js +18 -37
- package/dist/data-structures/matrix/navigator.js.map +1 -1
- package/dist/data-structures/matrix/vector2d.js +63 -84
- package/dist/data-structures/matrix/vector2d.js.map +1 -1
- package/dist/data-structures/priority-queue/max-priority-queue.js +13 -41
- package/dist/data-structures/priority-queue/max-priority-queue.js.map +1 -1
- package/dist/data-structures/priority-queue/min-priority-queue.js +13 -41
- package/dist/data-structures/priority-queue/min-priority-queue.js.map +1 -1
- package/dist/data-structures/priority-queue/priority-queue.js +93 -139
- package/dist/data-structures/priority-queue/priority-queue.js.map +1 -1
- package/dist/data-structures/queue/deque.js +82 -128
- package/dist/data-structures/queue/deque.js.map +1 -1
- package/dist/data-structures/queue/queue.js +57 -157
- package/dist/data-structures/queue/queue.js.map +1 -1
- package/dist/data-structures/stack/stack.js +21 -22
- package/dist/data-structures/stack/stack.js.map +1 -1
- package/dist/data-structures/tree/tree.js +33 -46
- package/dist/data-structures/tree/tree.js.map +1 -1
- package/dist/data-structures/trie/trie.js +93 -200
- package/dist/data-structures/trie/trie.js.map +1 -1
- package/dist/types/data-structures/abstract-binary-tree.js.map +1 -1
- package/dist/utils/utils.js +22 -107
- package/dist/utils/utils.js.map +1 -1
- package/lib/data-structures/binary-tree/abstract-binary-tree.d.ts +124 -123
- package/lib/data-structures/binary-tree/abstract-binary-tree.js +136 -216
- package/lib/data-structures/binary-tree/avl-tree.d.ts +19 -10
- package/lib/data-structures/binary-tree/avl-tree.js +35 -13
- package/lib/data-structures/binary-tree/binary-tree.d.ts +6 -6
- package/lib/data-structures/binary-tree/binary-tree.js +7 -7
- package/lib/data-structures/binary-tree/bst.d.ts +34 -34
- package/lib/data-structures/binary-tree/bst.js +86 -89
- package/lib/data-structures/binary-tree/rb-tree.d.ts +3 -3
- package/lib/data-structures/binary-tree/rb-tree.js +4 -4
- package/lib/data-structures/binary-tree/tree-multiset.d.ts +40 -42
- package/lib/data-structures/binary-tree/tree-multiset.js +76 -86
- package/lib/data-structures/graph/abstract-graph.d.ts +62 -62
- package/lib/data-structures/graph/abstract-graph.js +86 -86
- package/lib/data-structures/graph/directed-graph.d.ts +51 -51
- package/lib/data-structures/graph/directed-graph.js +63 -63
- package/lib/data-structures/graph/map-graph.d.ts +13 -13
- package/lib/data-structures/graph/map-graph.js +12 -12
- package/lib/data-structures/graph/undirected-graph.d.ts +30 -30
- package/lib/data-structures/graph/undirected-graph.js +32 -32
- package/lib/data-structures/priority-queue/priority-queue.d.ts +3 -3
- package/lib/data-structures/priority-queue/priority-queue.js +3 -3
- package/lib/data-structures/tree/tree.d.ts +4 -4
- package/lib/data-structures/tree/tree.js +6 -6
- package/lib/interfaces/abstract-binary-tree.d.ts +37 -42
- package/lib/interfaces/abstract-graph.d.ts +13 -13
- package/lib/interfaces/avl-tree.d.ts +6 -4
- package/lib/interfaces/bst.d.ts +10 -9
- package/lib/interfaces/directed-graph.d.ts +5 -5
- package/lib/interfaces/rb-tree.d.ts +2 -2
- package/lib/interfaces/undirected-graph.d.ts +2 -2
- package/lib/types/data-structures/abstract-binary-tree.d.ts +3 -3
- package/lib/types/data-structures/abstract-binary-tree.js +0 -1
- package/lib/types/data-structures/abstract-graph.d.ts +2 -2
- package/lib/types/data-structures/bst.d.ts +2 -2
- package/lib/types/data-structures/tree-multiset.d.ts +1 -1
- package/lib/types/utils/validate-type.d.ts +8 -8
- package/package.json +6 -6
- package/scripts/rename_clear_files.sh +29 -0
- package/src/data-structures/binary-tree/abstract-binary-tree.ts +241 -293
- package/src/data-structures/binary-tree/avl-tree.ts +43 -14
- package/src/data-structures/binary-tree/binary-tree.ts +8 -8
- package/src/data-structures/binary-tree/bst.ts +101 -96
- package/src/data-structures/binary-tree/rb-tree.ts +9 -9
- package/src/data-structures/binary-tree/tree-multiset.ts +82 -94
- package/src/data-structures/graph/abstract-graph.ts +114 -109
- package/src/data-structures/graph/directed-graph.ts +77 -77
- package/src/data-structures/graph/map-graph.ts +20 -15
- package/src/data-structures/graph/undirected-graph.ts +39 -39
- package/src/data-structures/priority-queue/priority-queue.ts +3 -3
- package/src/data-structures/tree/tree.ts +7 -7
- package/src/interfaces/abstract-binary-tree.ts +37 -50
- package/src/interfaces/abstract-graph.ts +13 -13
- package/src/interfaces/avl-tree.ts +6 -4
- package/src/interfaces/bst.ts +9 -9
- package/src/interfaces/directed-graph.ts +5 -5
- package/src/interfaces/rb-tree.ts +2 -2
- package/src/interfaces/undirected-graph.ts +2 -2
- package/src/types/data-structures/abstract-binary-tree.ts +3 -4
- package/src/types/data-structures/abstract-graph.ts +2 -2
- package/src/types/data-structures/bst.ts +2 -2
- package/src/types/data-structures/tree-multiset.ts +1 -1
- package/src/types/utils/validate-type.ts +10 -10
- package/test/integration/avl-tree.test.ts +24 -24
- package/test/integration/bst.test.ts +71 -71
- package/test/unit/data-structures/binary-tree/avl-tree.test.ts +28 -28
- package/test/unit/data-structures/binary-tree/binary-tree.test.ts +4 -12
- package/test/unit/data-structures/binary-tree/bst.test.ts +79 -79
- package/test/unit/data-structures/binary-tree/overall.test.ts +20 -20
- package/test/unit/data-structures/binary-tree/tree-multiset.test.ts +80 -80
- package/test/unit/data-structures/graph/directed-graph.test.ts +8 -8
- package/test/unit/data-structures/graph/map-graph.test.ts +4 -4
- package/test/unit/data-structures/graph/overall.test.ts +2 -2
- package/test/unit/data-structures/graph/undirected-graph.test.ts +1 -1
- package/test/unit/data-structures/priority-queue/priority-queue.test.ts +4 -5
- package/test/unit/data-structures/tree/tree.test.ts +2 -2
- package/umd/bundle.min.js +1 -1
- package/umd/bundle.min.js.map +1 -1
|
@@ -1,92 +1,73 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SkipList = exports.SkipListNode = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
class SkipListNode {
|
|
5
|
+
constructor(key, value, level) {
|
|
6
6
|
this.key = key;
|
|
7
7
|
this.value = value;
|
|
8
8
|
this.forward = new Array(level);
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
}());
|
|
10
|
+
}
|
|
12
11
|
exports.SkipListNode = SkipListNode;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
class SkipList {
|
|
13
|
+
get probability() {
|
|
14
|
+
return this._probability;
|
|
15
|
+
}
|
|
16
|
+
set probability(value) {
|
|
17
|
+
this._probability = value;
|
|
18
|
+
}
|
|
19
|
+
get maxLevel() {
|
|
20
|
+
return this._maxLevel;
|
|
21
|
+
}
|
|
22
|
+
set maxLevel(value) {
|
|
23
|
+
this._maxLevel = value;
|
|
24
|
+
}
|
|
25
|
+
get level() {
|
|
26
|
+
return this._level;
|
|
27
|
+
}
|
|
28
|
+
set level(value) {
|
|
29
|
+
this._level = value;
|
|
30
|
+
}
|
|
31
|
+
get head() {
|
|
32
|
+
return this._head;
|
|
33
|
+
}
|
|
34
|
+
set head(value) {
|
|
35
|
+
this._head = value;
|
|
36
|
+
}
|
|
37
|
+
constructor(maxLevel = 16, probability = 0.5) {
|
|
17
38
|
this._head = new SkipListNode(null, null, maxLevel);
|
|
18
39
|
this._level = 0;
|
|
19
40
|
this._maxLevel = maxLevel;
|
|
20
41
|
this._probability = probability;
|
|
21
42
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return this._probability;
|
|
25
|
-
},
|
|
26
|
-
set: function (value) {
|
|
27
|
-
this._probability = value;
|
|
28
|
-
},
|
|
29
|
-
enumerable: false,
|
|
30
|
-
configurable: true
|
|
31
|
-
});
|
|
32
|
-
Object.defineProperty(SkipList.prototype, "maxLevel", {
|
|
33
|
-
get: function () {
|
|
34
|
-
return this._maxLevel;
|
|
35
|
-
},
|
|
36
|
-
set: function (value) {
|
|
37
|
-
this._maxLevel = value;
|
|
38
|
-
},
|
|
39
|
-
enumerable: false,
|
|
40
|
-
configurable: true
|
|
41
|
-
});
|
|
42
|
-
Object.defineProperty(SkipList.prototype, "level", {
|
|
43
|
-
get: function () {
|
|
44
|
-
return this._level;
|
|
45
|
-
},
|
|
46
|
-
set: function (value) {
|
|
47
|
-
this._level = value;
|
|
48
|
-
},
|
|
49
|
-
enumerable: false,
|
|
50
|
-
configurable: true
|
|
51
|
-
});
|
|
52
|
-
Object.defineProperty(SkipList.prototype, "head", {
|
|
53
|
-
get: function () {
|
|
54
|
-
return this._head;
|
|
55
|
-
},
|
|
56
|
-
set: function (value) {
|
|
57
|
-
this._head = value;
|
|
58
|
-
},
|
|
59
|
-
enumerable: false,
|
|
60
|
-
configurable: true
|
|
61
|
-
});
|
|
62
|
-
SkipList.prototype.randomLevel = function () {
|
|
63
|
-
var level = 1;
|
|
43
|
+
randomLevel() {
|
|
44
|
+
let level = 1;
|
|
64
45
|
while (Math.random() < this.probability && level < this.maxLevel) {
|
|
65
46
|
level++;
|
|
66
47
|
}
|
|
67
48
|
return level;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
for (
|
|
49
|
+
}
|
|
50
|
+
add(key, value) {
|
|
51
|
+
const newNode = new SkipListNode(key, value, this.randomLevel());
|
|
52
|
+
const update = new Array(this.maxLevel).fill(this.head);
|
|
53
|
+
let current = this.head;
|
|
54
|
+
for (let i = this.level - 1; i >= 0; i--) {
|
|
74
55
|
while (current.forward[i] && current.forward[i].key < key) {
|
|
75
56
|
current = current.forward[i];
|
|
76
57
|
}
|
|
77
58
|
update[i] = current;
|
|
78
59
|
}
|
|
79
|
-
for (
|
|
60
|
+
for (let i = 0; i < newNode.forward.length; i++) {
|
|
80
61
|
newNode.forward[i] = update[i].forward[i];
|
|
81
62
|
update[i].forward[i] = newNode;
|
|
82
63
|
}
|
|
83
64
|
if (newNode.forward[0] !== null) {
|
|
84
65
|
this.level = Math.max(this.level, newNode.forward.length);
|
|
85
66
|
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
for (
|
|
67
|
+
}
|
|
68
|
+
get(key) {
|
|
69
|
+
let current = this.head;
|
|
70
|
+
for (let i = this.level - 1; i >= 0; i--) {
|
|
90
71
|
while (current.forward[i] && current.forward[i].key < key) {
|
|
91
72
|
current = current.forward[i];
|
|
92
73
|
}
|
|
@@ -96,11 +77,11 @@ var SkipList = (function () {
|
|
|
96
77
|
return current.value;
|
|
97
78
|
}
|
|
98
79
|
return undefined;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
for (
|
|
80
|
+
}
|
|
81
|
+
remove(key) {
|
|
82
|
+
const update = new Array(this.maxLevel).fill(this.head);
|
|
83
|
+
let current = this.head;
|
|
84
|
+
for (let i = this.level - 1; i >= 0; i--) {
|
|
104
85
|
while (current.forward[i] && current.forward[i].key < key) {
|
|
105
86
|
current = current.forward[i];
|
|
106
87
|
}
|
|
@@ -108,7 +89,7 @@ var SkipList = (function () {
|
|
|
108
89
|
}
|
|
109
90
|
current = current.forward[0];
|
|
110
91
|
if (current && current.key === key) {
|
|
111
|
-
for (
|
|
92
|
+
for (let i = 0; i < this.level; i++) {
|
|
112
93
|
if (update[i].forward[i] !== current) {
|
|
113
94
|
break;
|
|
114
95
|
}
|
|
@@ -120,8 +101,7 @@ var SkipList = (function () {
|
|
|
120
101
|
return true;
|
|
121
102
|
}
|
|
122
103
|
return false;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
}());
|
|
104
|
+
}
|
|
105
|
+
}
|
|
126
106
|
exports.SkipList = SkipList;
|
|
127
107
|
//# sourceMappingURL=skip-linked-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skip-linked-list.js","sourceRoot":"","sources":["../../../src/data-structures/linked-list/skip-linked-list.ts"],"names":[],"mappings":";;;AAQA;
|
|
1
|
+
{"version":3,"file":"skip-linked-list.js","sourceRoot":"","sources":["../../../src/data-structures/linked-list/skip-linked-list.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MatrixNTI2D = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
this._matrix = new Array(row).fill(undefined).map(
|
|
4
|
+
class MatrixNTI2D {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
const { row, col, initialVal } = options;
|
|
7
|
+
this._matrix = new Array(row).fill(undefined).map(() => new Array(col).fill(initialVal || 0));
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
toArray() {
|
|
10
10
|
return this._matrix;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
}());
|
|
11
|
+
}
|
|
12
|
+
}
|
|
14
13
|
exports.MatrixNTI2D = MatrixNTI2D;
|
|
15
14
|
//# sourceMappingURL=matrix.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../../src/data-structures/matrix/matrix.ts"],"names":[],"mappings":";;;AAQA;
|
|
1
|
+
{"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../../src/data-structures/matrix/matrix.ts"],"names":[],"mappings":";;;AAQA,MAAa,WAAW;IAQtB,YAAY,OAAmD;QAC7D,MAAM,EAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAC,GAAG,OAAO,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IAID,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAlBD,kCAkBC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Matrix2D = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
const vector2d_1 = require("./vector2d");
|
|
5
|
+
class Matrix2D {
|
|
6
|
+
constructor(value) {
|
|
7
7
|
if (typeof value === 'undefined') {
|
|
8
8
|
this._matrix = Matrix2D.identity;
|
|
9
9
|
}
|
|
@@ -17,109 +17,96 @@ var Matrix2D = (function () {
|
|
|
17
17
|
this._matrix = value;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
},
|
|
35
|
-
enumerable: false,
|
|
36
|
-
configurable: true
|
|
37
|
-
});
|
|
38
|
-
Object.defineProperty(Matrix2D.prototype, "m", {
|
|
39
|
-
get: function () {
|
|
40
|
-
return this._matrix;
|
|
41
|
-
},
|
|
42
|
-
enumerable: false,
|
|
43
|
-
configurable: true
|
|
44
|
-
});
|
|
45
|
-
Matrix2D.prototype.toVector = function () {
|
|
20
|
+
static get empty() {
|
|
21
|
+
return [[], [], []];
|
|
22
|
+
}
|
|
23
|
+
static get identity() {
|
|
24
|
+
return [
|
|
25
|
+
[1, 0, 0],
|
|
26
|
+
[0, 1, 0],
|
|
27
|
+
[0, 0, 1]
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
get m() {
|
|
31
|
+
return this._matrix;
|
|
32
|
+
}
|
|
33
|
+
toVector() {
|
|
46
34
|
return new vector2d_1.default(this._matrix[0][0], this._matrix[1][0]);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
for (
|
|
51
|
-
for (
|
|
35
|
+
}
|
|
36
|
+
static add(matrix1, matrix2) {
|
|
37
|
+
const result = Matrix2D.empty;
|
|
38
|
+
for (let i = 0; i < 3; i++) {
|
|
39
|
+
for (let j = 0; j < 3; j++) {
|
|
52
40
|
result[i][j] = matrix1.m[i][j] + matrix2.m[i][j];
|
|
53
41
|
}
|
|
54
42
|
}
|
|
55
43
|
return new Matrix2D(result);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
for (
|
|
60
|
-
for (
|
|
44
|
+
}
|
|
45
|
+
static subtract(matrix1, matrix2) {
|
|
46
|
+
const result = Matrix2D.empty;
|
|
47
|
+
for (let i = 0; i < 3; i++) {
|
|
48
|
+
for (let j = 0; j < 3; j++) {
|
|
61
49
|
result[i][j] = matrix1.m[i][j] - matrix2.m[i][j];
|
|
62
50
|
}
|
|
63
51
|
}
|
|
64
52
|
return new Matrix2D(result);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
for (
|
|
69
|
-
for (
|
|
53
|
+
}
|
|
54
|
+
static multiply(matrix1, matrix2) {
|
|
55
|
+
const result = Matrix2D.empty;
|
|
56
|
+
for (let i = 0; i < 3; i++) {
|
|
57
|
+
for (let j = 0; j < 3; j++) {
|
|
70
58
|
result[i][j] = 0;
|
|
71
|
-
for (
|
|
59
|
+
for (let k = 0; k < 3; k++) {
|
|
72
60
|
result[i][j] += matrix1.m[i][k] * matrix2.m[k][j];
|
|
73
61
|
}
|
|
74
62
|
}
|
|
75
63
|
}
|
|
76
64
|
return new Matrix2D(result);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
for (
|
|
81
|
-
for (
|
|
65
|
+
}
|
|
66
|
+
static multiplyByValue(matrix, value) {
|
|
67
|
+
const result = Matrix2D.empty;
|
|
68
|
+
for (let i = 0; i < 3; i++) {
|
|
69
|
+
for (let j = 0; j < 3; j++) {
|
|
82
70
|
result[i][j] = matrix.m[i][j] * value;
|
|
83
71
|
}
|
|
84
72
|
}
|
|
85
73
|
return new Matrix2D(result);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
|
|
74
|
+
}
|
|
75
|
+
static multiplyByVector(matrix, vector) {
|
|
76
|
+
const resultMatrix = Matrix2D.multiply(matrix, new Matrix2D(vector));
|
|
89
77
|
return resultMatrix.toVector();
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
78
|
+
}
|
|
79
|
+
static view(width, height) {
|
|
80
|
+
const scaleStep = 1;
|
|
81
|
+
const centerX = width / 2;
|
|
82
|
+
const centerY = height / 2;
|
|
83
|
+
const flipX = Math.cos(Math.PI);
|
|
96
84
|
return new Matrix2D([
|
|
97
85
|
[scaleStep, 0, centerX],
|
|
98
86
|
[0, flipX * scaleStep, centerY],
|
|
99
87
|
[0, 0, 1]
|
|
100
88
|
]);
|
|
101
|
-
}
|
|
102
|
-
|
|
89
|
+
}
|
|
90
|
+
static scale(factor) {
|
|
103
91
|
return Matrix2D.multiplyByValue(new Matrix2D(), factor);
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
92
|
+
}
|
|
93
|
+
static rotate(radians) {
|
|
94
|
+
const cos = Math.cos(radians);
|
|
95
|
+
const sin = Math.sin(radians);
|
|
108
96
|
return new Matrix2D([
|
|
109
97
|
[cos, -sin, 0],
|
|
110
98
|
[sin, cos, 0],
|
|
111
99
|
[0, 0, 1]
|
|
112
100
|
]);
|
|
113
|
-
}
|
|
114
|
-
|
|
101
|
+
}
|
|
102
|
+
static translate(vector) {
|
|
115
103
|
return new Matrix2D([
|
|
116
104
|
[1, 0, vector.x],
|
|
117
105
|
[0, 1, vector.y],
|
|
118
106
|
[0, 0, vector.w]
|
|
119
107
|
]);
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
}());
|
|
108
|
+
}
|
|
109
|
+
}
|
|
123
110
|
exports.Matrix2D = Matrix2D;
|
|
124
111
|
exports.default = Matrix2D;
|
|
125
112
|
//# sourceMappingURL=matrix2d.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matrix2d.js","sourceRoot":"","sources":["../../../src/data-structures/matrix/matrix2d.ts"],"names":[],"mappings":";;;AAOA,
|
|
1
|
+
{"version":3,"file":"matrix2d.js","sourceRoot":"","sources":["../../../src/data-structures/matrix/matrix2d.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
3
|
exports.Navigator = exports.Character = void 0;
|
|
20
|
-
|
|
21
|
-
|
|
4
|
+
class Character {
|
|
5
|
+
constructor(direction, turning) {
|
|
22
6
|
this.direction = direction;
|
|
23
|
-
this.turn =
|
|
7
|
+
this.turn = () => new Character(turning[direction], turning);
|
|
24
8
|
}
|
|
25
|
-
|
|
26
|
-
}());
|
|
9
|
+
}
|
|
27
10
|
exports.Character = Character;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var matrix = _a.matrix, turning = _a.turning, onMove = _a.onMove, _b = _a.init, cur = _b.cur, charDir = _b.charDir, VISITED = _b.VISITED;
|
|
11
|
+
class Navigator {
|
|
12
|
+
constructor({ matrix, turning, onMove, init: { cur, charDir, VISITED } }) {
|
|
31
13
|
this._matrix = matrix;
|
|
32
14
|
this._cur = cur;
|
|
33
15
|
this._character = new Character(charDir, turning);
|
|
@@ -36,9 +18,9 @@ var Navigator = (function () {
|
|
|
36
18
|
this._VISITED = VISITED;
|
|
37
19
|
this._matrix[this._cur[0]][this._cur[1]] = this._VISITED;
|
|
38
20
|
}
|
|
39
|
-
|
|
21
|
+
start() {
|
|
40
22
|
while (this.check(this._character.direction) || this.check(this._character.turn().direction)) {
|
|
41
|
-
|
|
23
|
+
const { direction } = this._character;
|
|
42
24
|
if (this.check(direction)) {
|
|
43
25
|
this.move(direction);
|
|
44
26
|
}
|
|
@@ -46,11 +28,11 @@ var Navigator = (function () {
|
|
|
46
28
|
this._character = this._character.turn();
|
|
47
29
|
}
|
|
48
30
|
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
31
|
+
}
|
|
32
|
+
check(direction) {
|
|
33
|
+
let forward, row;
|
|
34
|
+
const matrix = this._matrix;
|
|
35
|
+
const [i, j] = this._cur;
|
|
54
36
|
switch (direction) {
|
|
55
37
|
case 'up':
|
|
56
38
|
row = matrix[i - 1];
|
|
@@ -72,8 +54,8 @@ var Navigator = (function () {
|
|
|
72
54
|
break;
|
|
73
55
|
}
|
|
74
56
|
return forward !== undefined && forward !== this._VISITED;
|
|
75
|
-
}
|
|
76
|
-
|
|
57
|
+
}
|
|
58
|
+
move(direction) {
|
|
77
59
|
switch (direction) {
|
|
78
60
|
case 'up':
|
|
79
61
|
this._cur[0]--;
|
|
@@ -88,11 +70,10 @@ var Navigator = (function () {
|
|
|
88
70
|
this._cur[1]--;
|
|
89
71
|
break;
|
|
90
72
|
}
|
|
91
|
-
|
|
73
|
+
const [i, j] = this._cur;
|
|
92
74
|
this._matrix[i][j] = this._VISITED;
|
|
93
75
|
this.onMove && this.onMove(this._cur);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
}());
|
|
76
|
+
}
|
|
77
|
+
}
|
|
97
78
|
exports.Navigator = Navigator;
|
|
98
79
|
//# sourceMappingURL=navigator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigator.js","sourceRoot":"","sources":["../../../src/data-structures/matrix/navigator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"navigator.js","sourceRoot":"","sources":["../../../src/data-structures/matrix/navigator.ts"],"names":[],"mappings":";;;AASA,MAAa,SAAS;IAYpB,YAAY,SAAoB,EAAE,OAAgB;QAChD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,IAAI,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;CACF;AAhBD,8BAgBC;AAED,MAAa,SAAS;IAYpB,YAAY,EAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAC,EAAqB;QACtF,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC3D,CAAC;IAMD,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE;YAC5F,MAAM,EAAC,SAAS,EAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YACpC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;gBACzB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACtB;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,EAAE;gBACvD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;aAC1C;SACF;IACH,CAAC;IAQD,KAAK,CAAC,SAAoB;QACxB,IAAI,OAAsB,EAAE,GAAoB,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,QAAQ,SAAS,EAAE;YACjB,KAAK,IAAI;gBACP,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,GAAG;oBAAE,OAAO,KAAK,CAAC;gBACvB,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,MAAM;gBACT,GAAG,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpB,IAAI,CAAC,GAAG;oBAAE,OAAO,KAAK,CAAC;gBACvB,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC3B,MAAM;SACT;QACD,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC;IAC5D,CAAC;IAOD,IAAI,CAAC,SAAoB;QACvB,QAAQ,SAAS,EAAE;YACjB,KAAK,IAAI;gBACP,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM;YACR,KAAK,MAAM;gBACT,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM;SACT;QAED,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;CACF;AA7FD,8BA6FC"}
|