@raikuxq/alg-ds 1.1.3 → 1.1.4
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/lib/algorithms/binary-search.d.ts +5 -0
- package/lib/algorithms/binary-search.js +27 -0
- package/lib/algorithms/factorial.d.ts +9 -0
- package/lib/algorithms/factorial.js +17 -0
- package/lib/algorithms/fibonacci.d.ts +9 -0
- package/lib/algorithms/fibonacci.js +17 -0
- package/lib/algorithms/memoize.d.ts +5 -0
- package/lib/algorithms/memoize.js +22 -0
- package/lib/algorithms/sorts/bubble-sort.d.ts +9 -0
- package/lib/algorithms/sorts/bubble-sort.js +23 -0
- package/lib/algorithms/sorts/insertion-sort.d.ts +9 -0
- package/lib/algorithms/sorts/insertion-sort.js +25 -0
- package/lib/algorithms/sorts/merge-sort.d.ts +9 -0
- package/lib/algorithms/sorts/merge-sort.js +61 -0
- package/lib/algorithms/sorts/quick-sort.d.ts +9 -0
- package/lib/algorithms/sorts/quick-sort.js +45 -0
- package/lib/algorithms/sorts/select-sort.d.ts +9 -0
- package/lib/algorithms/sorts/select-sort.js +20 -0
- package/lib/algorithms/transpose-matrix.d.ts +5 -0
- package/lib/algorithms/transpose-matrix.js +20 -0
- package/lib/constants.d.ts +2 -0
- package/lib/constants.js +6 -0
- package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.d.ts +15 -0
- package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.js +53 -0
- package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +60 -0
- package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +36 -0
- package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.d.ts +13 -0
- package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.js +59 -0
- package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +70 -0
- package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +268 -0
- package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.d.ts +16 -0
- package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.js +70 -0
- package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +57 -0
- package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +234 -0
- package/lib/data-structures/Graph/AbstractGraph.d.ts +84 -0
- package/lib/data-structures/Graph/AbstractGraph.js +141 -0
- package/lib/data-structures/Graph/DirectedGraph.d.ts +24 -0
- package/lib/data-structures/Graph/DirectedGraph.js +85 -0
- package/lib/data-structures/Graph/GraphEdge.d.ts +16 -0
- package/lib/data-structures/Graph/GraphEdge.js +43 -0
- package/lib/data-structures/Graph/UndirectedGraph.d.ts +28 -0
- package/lib/data-structures/Graph/UndirectedGraph.js +102 -0
- package/lib/data-structures/Graph/demo/generateRandomGraph.d.ts +4 -0
- package/lib/data-structures/Graph/demo/generateRandomGraph.js +72 -0
- package/lib/data-structures/Graph/iterator/AbstractGraphIterator.d.ts +35 -0
- package/lib/data-structures/Graph/iterator/AbstractGraphIterator.js +90 -0
- package/lib/data-structures/Graph/iterator/GraphIteratorBFS.d.ts +28 -0
- package/lib/data-structures/Graph/iterator/GraphIteratorBFS.js +70 -0
- package/lib/data-structures/Graph/iterator/GraphIteratorDFS.d.ts +28 -0
- package/lib/data-structures/Graph/iterator/GraphIteratorDFS.js +70 -0
- package/lib/data-structures/Graph/iterator/GraphIteratorDijkstra.d.ts +32 -0
- package/lib/data-structures/Graph/iterator/GraphIteratorDijkstra.js +99 -0
- package/lib/data-structures/Graph/presenter/presenterAdjacencyLists.d.ts +19 -0
- package/lib/data-structures/Graph/presenter/presenterAdjacencyLists.js +28 -0
- package/lib/data-structures/Graph/presenter/presenterAdjacencyMatrix.d.ts +32 -0
- package/lib/data-structures/Graph/presenter/presenterAdjacencyMatrix.js +48 -0
- package/lib/data-structures/Graph/searching/hasPath.d.ts +9 -0
- package/lib/data-structures/Graph/searching/hasPath.js +29 -0
- package/lib/data-structures/Graph/searching/shortestPath.d.ts +9 -0
- package/lib/data-structures/Graph/searching/shortestPath.js +29 -0
- package/lib/data-structures/Graph/strategy/BFSIterationStrategy.d.ts +6 -0
- package/lib/data-structures/Graph/strategy/BFSIterationStrategy.js +13 -0
- package/lib/data-structures/Graph/strategy/DFSIterationStrategy.d.ts +6 -0
- package/lib/data-structures/Graph/strategy/DFSIterationStrategy.js +13 -0
- package/lib/data-structures/Graph/strategy/DijkstraIterationStrategy.d.ts +6 -0
- package/lib/data-structures/Graph/strategy/DijkstraIterationStrategy.js +13 -0
- package/lib/data-structures/Graph/transposing/transposeDirectedGraph.d.ts +2 -0
- package/lib/data-structures/Graph/transposing/transposeDirectedGraph.js +14 -0
- package/lib/data-structures/HashTable/HashTable.d.ts +73 -0
- package/lib/data-structures/HashTable/HashTable.js +169 -0
- package/lib/data-structures/HashTable/HashTableNode.d.ts +11 -0
- package/lib/data-structures/HashTable/HashTableNode.js +39 -0
- package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +125 -0
- package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +236 -0
- package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.d.ts +20 -0
- package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.js +41 -0
- package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +48 -0
- package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.js +150 -0
- package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.d.ts +25 -0
- package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.js +65 -0
- package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +52 -0
- package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.js +137 -0
- package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.d.ts +7 -0
- package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.js +29 -0
- package/lib/data-structures/LoopedArray/LoopedArray.d.ts +86 -0
- package/lib/data-structures/LoopedArray/LoopedArray.js +161 -0
- package/lib/data-structures/Queue/Queue.d.ts +50 -0
- package/lib/data-structures/Queue/Queue.js +83 -0
- package/lib/data-structures/Stack/Stack.d.ts +50 -0
- package/lib/data-structures/Stack/Stack.js +83 -0
- package/lib/exports/algorithms.d.ts +16 -0
- package/lib/exports/algorithms.js +36 -0
- package/lib/exports/constants.d.ts +2 -0
- package/lib/exports/constants.js +7 -0
- package/lib/exports/data-structures.d.ts +11 -0
- package/lib/exports/data-structures.js +24 -0
- package/lib/exports/helpers.d.ts +6 -0
- package/lib/exports/helpers.js +14 -0
- package/lib/exports/sorts.d.ts +6 -0
- package/lib/exports/sorts.js +14 -0
- package/lib/exports/utils.d.ts +3 -0
- package/lib/exports/utils.js +14 -0
- package/lib/exports.d.ts +44 -0
- package/lib/exports.js +89 -0
- package/lib/helpers/createBinaryTree.d.ts +6 -0
- package/lib/helpers/createBinaryTree.js +22 -0
- package/lib/helpers/createGraph.d.ts +6 -0
- package/lib/helpers/createGraph.js +24 -0
- package/lib/helpers/createGraphFromMatrix.d.ts +7 -0
- package/lib/helpers/createGraphFromMatrix.js +37 -0
- package/lib/helpers/createLinkedList.d.ts +3 -0
- package/lib/helpers/createLinkedList.js +21 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +6 -0
- package/lib/types/ArrayMatrix.d.ts +1 -0
- package/lib/types/ArrayMatrix.js +3 -0
- package/lib/types/EnumBinarySearchTreeType.d.ts +4 -0
- package/lib/types/EnumBinarySearchTreeType.js +9 -0
- package/lib/types/EnumGraphType.d.ts +4 -0
- package/lib/types/EnumGraphType.js +9 -0
- package/lib/types/EnumLinkedListType.d.ts +4 -0
- package/lib/types/EnumLinkedListType.js +9 -0
- package/lib/types/EnumRandomGenerationFormat.d.ts +4 -0
- package/lib/types/EnumRandomGenerationFormat.js +9 -0
- package/lib/types/EnumTreeTraversalType.d.ts +5 -0
- package/lib/types/EnumTreeTraversalType.js +10 -0
- package/lib/types/FnCompareTwo.d.ts +1 -0
- package/lib/types/FnCompareTwo.js +3 -0
- package/lib/types/FnToMemoize.d.ts +1 -0
- package/lib/types/FnToMemoize.js +3 -0
- package/lib/types/IArrayFacade.d.ts +4 -0
- package/lib/types/IArrayFacade.js +3 -0
- package/lib/types/IBiDirectIterable.d.ts +5 -0
- package/lib/types/IBiDirectIterable.js +3 -0
- package/lib/types/IBiDirectIterator.d.ts +11 -0
- package/lib/types/IBiDirectIterator.js +3 -0
- package/lib/types/IBinaryTree.d.ts +12 -0
- package/lib/types/IBinaryTree.js +3 -0
- package/lib/types/IConvertableToArray.d.ts +4 -0
- package/lib/types/IConvertableToArray.js +3 -0
- package/lib/types/IGraph.d.ts +14 -0
- package/lib/types/IGraph.js +3 -0
- package/lib/types/IGraphIterationStrategy.d.ts +5 -0
- package/lib/types/IGraphIterationStrategy.js +3 -0
- package/lib/types/IGraphIterator.d.ts +11 -0
- package/lib/types/IGraphIterator.js +3 -0
- package/lib/types/IIterable.d.ts +4 -0
- package/lib/types/IIterable.js +3 -0
- package/lib/types/IIterator.d.ts +14 -0
- package/lib/types/IIterator.js +3 -0
- package/lib/types/IKeyValueStorage.d.ts +8 -0
- package/lib/types/IKeyValueStorage.js +3 -0
- package/lib/types/ILinearStorage.d.ts +11 -0
- package/lib/types/ILinearStorage.js +3 -0
- package/lib/types/ILinearStorageRA.d.ts +13 -0
- package/lib/types/ILinearStorageRA.js +3 -0
- package/lib/types/ILinkedList.d.ts +4 -0
- package/lib/types/ILinkedList.js +3 -0
- package/lib/utils.d.ts +29 -0
- package/lib/utils.js +95 -0
- package/package.json +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.binarySearch = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Find element's index in sorted array
|
|
6
|
+
* Time complexity: O(log(n))
|
|
7
|
+
*/
|
|
8
|
+
exports.binarySearch = function (elements, searchElement) {
|
|
9
|
+
var length = elements.length;
|
|
10
|
+
var leftIndex = 0;
|
|
11
|
+
var rightIndex = length - 1;
|
|
12
|
+
while (leftIndex <= rightIndex) {
|
|
13
|
+
var midIndex = Math.ceil((leftIndex + rightIndex) / 2);
|
|
14
|
+
var midEl = elements[midIndex];
|
|
15
|
+
if (searchElement == midEl) {
|
|
16
|
+
return midIndex;
|
|
17
|
+
}
|
|
18
|
+
else if (midEl > searchElement) {
|
|
19
|
+
rightIndex = midIndex - 1;
|
|
20
|
+
}
|
|
21
|
+
else if (midEl < searchElement) {
|
|
22
|
+
leftIndex = midIndex + 1;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGdvcml0aG1zL2JpbmFyeS1zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7OztHQUdHO0FBQ1UsUUFBQSxZQUFZLEdBQUcsVUFDMUIsUUFBdUIsRUFDdkIsYUFBcUI7SUFFckIsSUFBTSxNQUFNLEdBQVcsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUV2QyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDbEIsSUFBSSxVQUFVLEdBQVcsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVwQyxPQUFPLFNBQVMsSUFBSSxVQUFVLEVBQUU7UUFDOUIsSUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFNLEtBQUssR0FBVyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsSUFBSSxhQUFhLElBQUksS0FBSyxFQUFFO1lBQzFCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO2FBQU0sSUFBSSxLQUFLLEdBQUcsYUFBYSxFQUFFO1lBQ2hDLFVBQVUsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxLQUFLLEdBQUcsYUFBYSxFQUFFO1lBQ2hDLFNBQVMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1NBQzFCO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FnToMemoize } from "../types/FnToMemoize";
|
|
2
|
+
/**
|
|
3
|
+
* Time complexity: O(n!)
|
|
4
|
+
*/
|
|
5
|
+
export declare const factorial: (x: number) => number;
|
|
6
|
+
/**
|
|
7
|
+
* Time complexity: O(n) - due to caching
|
|
8
|
+
*/
|
|
9
|
+
export declare const memoizedFactorial: FnToMemoize<number, number>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.memoizedFactorial = exports.factorial = void 0;
|
|
4
|
+
var memoize_1 = require("./memoize");
|
|
5
|
+
/**
|
|
6
|
+
* Time complexity: O(n!)
|
|
7
|
+
*/
|
|
8
|
+
exports.factorial = function (x) {
|
|
9
|
+
return x > 1 ? x * exports.factorial(x - 1) : x;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Time complexity: O(n) - due to caching
|
|
13
|
+
*/
|
|
14
|
+
exports.memoizedFactorial = memoize_1.memoize(function (n) {
|
|
15
|
+
return n > 1 ? n * exports.memoizedFactorial(n - 1) : n;
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsZ29yaXRobXMvZmFjdG9yaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUFvQztBQUdwQzs7R0FFRztBQUNVLFFBQUEsU0FBUyxHQUFHLFVBQUMsQ0FBUztJQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBZ0MsaUJBQU8sQ0FDbkUsVUFBQyxDQUFTO0lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcseUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { FnToMemoize } from "../types/FnToMemoize";
|
|
2
|
+
/**
|
|
3
|
+
* Time complexity: O(n!)
|
|
4
|
+
*/
|
|
5
|
+
export declare const fibonacci: (n: number) => number;
|
|
6
|
+
/**
|
|
7
|
+
* Time complexity: O(n) - due to caching
|
|
8
|
+
*/
|
|
9
|
+
export declare const memoizedFibonacci: FnToMemoize<number, number>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.memoizedFibonacci = exports.fibonacci = void 0;
|
|
4
|
+
var memoize_1 = require("./memoize");
|
|
5
|
+
/**
|
|
6
|
+
* Time complexity: O(n!)
|
|
7
|
+
*/
|
|
8
|
+
exports.fibonacci = function (n) {
|
|
9
|
+
return n > 1 ? exports.fibonacci(n - 1) + exports.fibonacci(n - 2) : n;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Time complexity: O(n) - due to caching
|
|
13
|
+
*/
|
|
14
|
+
exports.memoizedFibonacci = memoize_1.memoize(function (n) {
|
|
15
|
+
return n > 1 ? exports.memoizedFibonacci(n - 1) + exports.memoizedFibonacci(n - 2) : n;
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlib25hY2NpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsZ29yaXRobXMvZmlib25hY2NpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFDQUFvQztBQUVwQzs7R0FFRztBQUNVLFFBQUEsU0FBUyxHQUFHLFVBQUMsQ0FBUztJQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGlCQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLGlCQUFpQixHQUFnQyxpQkFBTyxDQUNuRSxVQUFDLENBQVM7SUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUFpQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyx5QkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQ0YsQ0FBQyJ9
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FnToMemoize } from "../types/FnToMemoize";
|
|
2
|
+
/**
|
|
3
|
+
* Wrapper function that storing the results of calls and returning the cached result when the same inputs occur again
|
|
4
|
+
*/
|
|
5
|
+
export declare const memoize: <Key, Value>(fn: FnToMemoize<Key, Value>) => FnToMemoize<Key, Value>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.memoize = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Wrapper function that storing the results of calls and returning the cached result when the same inputs occur again
|
|
6
|
+
*/
|
|
7
|
+
exports.memoize = function (fn) {
|
|
8
|
+
var cache = new Map();
|
|
9
|
+
return function () {
|
|
10
|
+
var args = [];
|
|
11
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
12
|
+
args[_i] = arguments[_i];
|
|
13
|
+
}
|
|
14
|
+
var jsonArgs = JSON.stringify(args);
|
|
15
|
+
if (!cache.has(jsonArgs)) {
|
|
16
|
+
var result = fn.apply(void 0, args);
|
|
17
|
+
cache.set(jsonArgs, result);
|
|
18
|
+
}
|
|
19
|
+
return cache.get(jsonArgs);
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGdvcml0aG1zL21lbW9pemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7O0dBRUc7QUFDVSxRQUFBLE9BQU8sR0FBRyxVQUNyQixFQUEyQjtJQUUzQixJQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztJQUV2QyxPQUFPO1FBQUMsY0FBbUI7YUFBbkIsVUFBbUIsRUFBbkIscUJBQW1CLEVBQW5CLElBQW1CO1lBQW5CLHlCQUFtQjs7UUFDekIsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4QixJQUFNLE1BQU0sR0FBRyxFQUFFLGVBQUksSUFBSSxDQUFDLENBQUM7WUFDM0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDN0I7UUFFRCxPQUFjLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.bubbleSort = void 0;
|
|
4
|
+
var utils_1 = require("../../utils");
|
|
5
|
+
/**
|
|
6
|
+
* Bubble sorting algorithm
|
|
7
|
+
*
|
|
8
|
+
* @description
|
|
9
|
+
* Time complexity: Best O(n); Avg O(n \^ 2); Worst O(n \^ 2)
|
|
10
|
+
* @description
|
|
11
|
+
* Memory complexity: Worst case: O(1)
|
|
12
|
+
*/
|
|
13
|
+
exports.bubbleSort = function (arr) {
|
|
14
|
+
for (var i = 0; i < arr.length - 1; i++) {
|
|
15
|
+
for (var j = 0; j < arr.length - 1; j++) {
|
|
16
|
+
if (arr[j] > arr[j + 1]) {
|
|
17
|
+
utils_1.swapArrayItems(arr, j, j + 1);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return arr;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLXNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxnb3JpdGhtcy9zb3J0cy9idWJibGUtc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBNkM7QUFFN0M7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsVUFBVSxHQUFHLFVBQUMsR0FBa0I7SUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixzQkFBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQy9CO1NBQ0Y7S0FDRjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.insertionSort = void 0;
|
|
4
|
+
var utils_1 = require("../../utils");
|
|
5
|
+
/**
|
|
6
|
+
* Insertion sorting algorithm
|
|
7
|
+
*
|
|
8
|
+
* @description
|
|
9
|
+
* Time complexity: Best O(n); Avg O(n \^ 2); Worst O(n \^ 2);
|
|
10
|
+
* @description
|
|
11
|
+
* Memory complexity: Worst case: O(1)
|
|
12
|
+
*/
|
|
13
|
+
exports.insertionSort = function (arr) {
|
|
14
|
+
for (var i = 1; i < arr.length; i++) {
|
|
15
|
+
var current = arr[i];
|
|
16
|
+
var j = i - 1;
|
|
17
|
+
while (j >= 0 && arr[j] > current) {
|
|
18
|
+
utils_1.swapArrayItems(arr, j + 1, j);
|
|
19
|
+
j--;
|
|
20
|
+
}
|
|
21
|
+
arr[j + 1] = current;
|
|
22
|
+
}
|
|
23
|
+
return arr;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0aW9uLXNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxnb3JpdGhtcy9zb3J0cy9pbnNlcnRpb24tc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBNkM7QUFFN0M7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsYUFBYSxHQUFHLFVBQUMsR0FBa0I7SUFDOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsSUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFZCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRTtZQUNqQyxzQkFBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUMsRUFBRSxDQUFDO1NBQ0w7UUFFRCxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztLQUN0QjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge sorting algorithm
|
|
3
|
+
*
|
|
4
|
+
* @description
|
|
5
|
+
* Time complexity: Best O(n * log(n)); Avg O(n * log(n)); Worst O(n * log(n))
|
|
6
|
+
* @description
|
|
7
|
+
* Memory complexity: Worst case: O(n)
|
|
8
|
+
*/
|
|
9
|
+
export declare const mergeSort: (arr: Array<number>) => Array<number>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeSort = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Merge two sorted arrays into one array
|
|
6
|
+
*/
|
|
7
|
+
var merge = function (arr, leftIndex, midIndex, rightIndex) {
|
|
8
|
+
var container = arr.slice(leftIndex, rightIndex + 1);
|
|
9
|
+
var resultArrIndex = leftIndex;
|
|
10
|
+
var leftHalfIndex = leftIndex;
|
|
11
|
+
var rightHalfIndex = midIndex + 1;
|
|
12
|
+
/** While both halves of array are not ended */
|
|
13
|
+
while (leftHalfIndex <= midIndex && rightHalfIndex <= rightIndex) {
|
|
14
|
+
var leftHalfElement = container[leftHalfIndex - leftIndex];
|
|
15
|
+
var rightHalfElement = container[rightHalfIndex - leftIndex];
|
|
16
|
+
if (leftHalfElement < rightHalfElement) {
|
|
17
|
+
arr[resultArrIndex] = leftHalfElement;
|
|
18
|
+
leftHalfIndex++;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
arr[resultArrIndex] = rightHalfElement;
|
|
22
|
+
rightHalfIndex++;
|
|
23
|
+
}
|
|
24
|
+
resultArrIndex++;
|
|
25
|
+
}
|
|
26
|
+
/** If one of halves is ended, the remaining one will just be pushed to result */
|
|
27
|
+
while (leftHalfIndex <= midIndex) {
|
|
28
|
+
arr[resultArrIndex] = container[leftHalfIndex - leftIndex];
|
|
29
|
+
resultArrIndex++;
|
|
30
|
+
leftHalfIndex++;
|
|
31
|
+
}
|
|
32
|
+
while (rightHalfIndex <= rightIndex) {
|
|
33
|
+
arr[resultArrIndex] = container[rightHalfIndex - leftIndex];
|
|
34
|
+
resultArrIndex++;
|
|
35
|
+
rightHalfIndex++;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Divide array into 2 halves and merge them
|
|
40
|
+
*/
|
|
41
|
+
var sortRange = function (arr, leftIndex, rightIndex) {
|
|
42
|
+
if (rightIndex > leftIndex) {
|
|
43
|
+
var midIndex = Math.floor(leftIndex + (rightIndex - leftIndex) / 2);
|
|
44
|
+
sortRange(arr, leftIndex, midIndex);
|
|
45
|
+
sortRange(arr, midIndex + 1, rightIndex);
|
|
46
|
+
merge(arr, leftIndex, midIndex, rightIndex);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Merge sorting algorithm
|
|
51
|
+
*
|
|
52
|
+
* @description
|
|
53
|
+
* Time complexity: Best O(n * log(n)); Avg O(n * log(n)); Worst O(n * log(n))
|
|
54
|
+
* @description
|
|
55
|
+
* Memory complexity: Worst case: O(n)
|
|
56
|
+
*/
|
|
57
|
+
exports.mergeSort = function (arr) {
|
|
58
|
+
sortRange(arr, 0, arr.length - 1);
|
|
59
|
+
return arr;
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2Utc29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGdvcml0aG1zL3NvcnRzL21lcmdlLXNvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFNLEtBQUssR0FBRyxVQUNaLEdBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLFVBQWtCO0lBRWxCLElBQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUV2RCxJQUFJLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDL0IsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQzlCLElBQUksY0FBYyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFbEMsK0NBQStDO0lBQy9DLE9BQU8sYUFBYSxJQUFJLFFBQVEsSUFBSSxjQUFjLElBQUksVUFBVSxFQUFFO1FBQ2hFLElBQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDN0QsSUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBRS9ELElBQUksZUFBZSxHQUFHLGdCQUFnQixFQUFFO1lBQ3RDLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxlQUFlLENBQUM7WUFDdEMsYUFBYSxFQUFFLENBQUM7U0FDakI7YUFBTTtZQUNMLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztZQUN2QyxjQUFjLEVBQUUsQ0FBQztTQUNsQjtRQUNELGNBQWMsRUFBRSxDQUFDO0tBQ2xCO0lBRUQsaUZBQWlGO0lBQ2pGLE9BQU8sYUFBYSxJQUFJLFFBQVEsRUFBRTtRQUNoQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsU0FBUyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUMzRCxjQUFjLEVBQUUsQ0FBQztRQUNqQixhQUFhLEVBQUUsQ0FBQztLQUNqQjtJQUNELE9BQU8sY0FBYyxJQUFJLFVBQVUsRUFBRTtRQUNuQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsU0FBUyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUM1RCxjQUFjLEVBQUUsQ0FBQztRQUNqQixjQUFjLEVBQUUsQ0FBQztLQUNsQjtBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsSUFBTSxTQUFTLEdBQUcsVUFDaEIsR0FBa0IsRUFDbEIsU0FBaUIsRUFDakIsVUFBa0I7SUFFbEIsSUFBSSxVQUFVLEdBQUcsU0FBUyxFQUFFO1FBQzFCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXRFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV6QyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDN0M7QUFDSCxDQUFDLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ1UsUUFBQSxTQUFTLEdBQUcsVUFBQyxHQUFrQjtJQUMxQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWxDLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.quickSort = void 0;
|
|
4
|
+
var utils_1 = require("../../utils");
|
|
5
|
+
/**
|
|
6
|
+
* Quick sort algorithm
|
|
7
|
+
*
|
|
8
|
+
* @description
|
|
9
|
+
* Time complexity: Best O(n * log(n)); Avg O(n * log(n)); Worst O(n ^2)
|
|
10
|
+
* @description
|
|
11
|
+
* Memory complexity: Worst case: O(1)
|
|
12
|
+
*/
|
|
13
|
+
exports.quickSort = function (arr) {
|
|
14
|
+
var partition = function (arr, leftIndex, rightIndex) {
|
|
15
|
+
var pivot = arr[leftIndex];
|
|
16
|
+
var leftWall = leftIndex;
|
|
17
|
+
var rightWall = rightIndex;
|
|
18
|
+
while (leftWall <= rightWall) {
|
|
19
|
+
while (arr[rightWall] > pivot) {
|
|
20
|
+
rightWall--;
|
|
21
|
+
}
|
|
22
|
+
while (arr[leftWall] < pivot) {
|
|
23
|
+
leftWall++;
|
|
24
|
+
}
|
|
25
|
+
if (leftWall <= rightWall) {
|
|
26
|
+
utils_1.swapArrayItems(arr, leftWall, rightWall);
|
|
27
|
+
rightWall--;
|
|
28
|
+
leftWall++;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return leftWall;
|
|
32
|
+
};
|
|
33
|
+
var sort = function (arr, leftIndex, rightIndex) {
|
|
34
|
+
if (leftIndex === void 0) { leftIndex = 0; }
|
|
35
|
+
if (rightIndex === void 0) { rightIndex = arr.length - 1; }
|
|
36
|
+
if (leftIndex < rightIndex) {
|
|
37
|
+
var pivot = partition(arr, leftIndex, rightIndex);
|
|
38
|
+
sort(arr, leftIndex, pivot - 1);
|
|
39
|
+
sort(arr, pivot, rightIndex);
|
|
40
|
+
}
|
|
41
|
+
return arr;
|
|
42
|
+
};
|
|
43
|
+
return sort(arr);
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stc29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGdvcml0aG1zL3NvcnRzL3F1aWNrLXNvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQTZDO0FBRTdDOzs7Ozs7O0dBT0c7QUFDVSxRQUFBLFNBQVMsR0FBRyxVQUFDLEdBQWtCO0lBQzFDLElBQU0sU0FBUyxHQUFHLFVBQ2hCLEdBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLFVBQWtCO1FBRWxCLElBQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QixJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDekIsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDO1FBRTNCLE9BQU8sUUFBUSxJQUFJLFNBQVMsRUFBRTtZQUM1QixPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLEVBQUU7Z0JBQzdCLFNBQVMsRUFBRSxDQUFDO2FBQ2I7WUFDRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLEVBQUU7Z0JBQzVCLFFBQVEsRUFBRSxDQUFDO2FBQ1o7WUFDRCxJQUFJLFFBQVEsSUFBSSxTQUFTLEVBQUU7Z0JBQ3pCLHNCQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDekMsU0FBUyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxFQUFFLENBQUM7YUFDWjtTQUNGO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYsSUFBTSxJQUFJLEdBQUcsVUFDWCxHQUFrQixFQUNsQixTQUFhLEVBQ2IsVUFBbUM7UUFEbkMsMEJBQUEsRUFBQSxhQUFhO1FBQ2IsMkJBQUEsRUFBQSxhQUFxQixHQUFHLENBQUMsTUFBTSxHQUFHLENBQUM7UUFFbkMsSUFBSSxTQUFTLEdBQUcsVUFBVSxFQUFFO1lBQzFCLElBQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXBELElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztTQUM5QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0lBRUYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.selectSort = void 0;
|
|
4
|
+
var utils_1 = require("../../utils");
|
|
5
|
+
/**
|
|
6
|
+
* Selection sorting algorithm
|
|
7
|
+
*
|
|
8
|
+
* @description
|
|
9
|
+
* Time complexity: Best O(n \^ 2); Avg O(n \^ 2); Worst O(n \^ 2)
|
|
10
|
+
* @description
|
|
11
|
+
* Memory complexity: Worst case: O(1)
|
|
12
|
+
*/
|
|
13
|
+
exports.selectSort = function (arr) {
|
|
14
|
+
for (var index = 0; index < arr.length; index++) {
|
|
15
|
+
var minIndex = utils_1.getMinIndexFromIndex(arr, index);
|
|
16
|
+
utils_1.swapArrayItems(arr, minIndex, index);
|
|
17
|
+
}
|
|
18
|
+
return arr;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxnb3JpdGhtcy9zb3J0cy9zZWxlY3Qtc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBbUU7QUFFbkU7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsVUFBVSxHQUFHLFVBQUMsR0FBa0I7SUFDM0MsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDL0MsSUFBTSxRQUFRLEdBQVcsNEJBQW9CLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTFELHNCQUFjLENBQVMsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM5QztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transposeMatrix = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Will flips a matrix over its diagonal
|
|
6
|
+
*/
|
|
7
|
+
exports.transposeMatrix = function (matrix) {
|
|
8
|
+
/** Validation */
|
|
9
|
+
matrix.forEach(function (subArray) {
|
|
10
|
+
var checkIsSameLength = subArray.length === matrix.length;
|
|
11
|
+
if (!checkIsSameLength) {
|
|
12
|
+
throw new Error("Given array is not a matrix");
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
return matrix.reduce(function (acc, current, currentIndex) {
|
|
16
|
+
acc[currentIndex] = matrix.map(function (rowArr) { return rowArr[currentIndex]; });
|
|
17
|
+
return acc;
|
|
18
|
+
}, new Array(matrix.length));
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3NlLW1hdHJpeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGdvcml0aG1zL3RyYW5zcG9zZS1tYXRyaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7O0dBRUc7QUFDVSxRQUFBLGVBQWUsR0FBRyxVQUFDLE1BQW1CO0lBQ2pELGlCQUFpQjtJQUNqQixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUMsUUFBUTtRQUN0QixJQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1RCxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFlBQVk7UUFDOUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBQyxNQUFNLElBQUssT0FBQSxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQXBCLENBQW9CLENBQUMsQ0FBQztRQUNqRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMifQ==
|
package/lib/constants.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EDGE_NOT_EXISTS_STATE = exports.EDGE_EXISTS_STATE = void 0;
|
|
4
|
+
exports.EDGE_EXISTS_STATE = 1;
|
|
5
|
+
exports.EDGE_NOT_EXISTS_STATE = 0;
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUN0QixRQUFBLHFCQUFxQixHQUFHLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export default abstract class AbstractBinaryNode<T> {
|
|
2
|
+
protected _data: T;
|
|
3
|
+
protected _left: AbstractBinaryNode<T> | null;
|
|
4
|
+
protected _right: AbstractBinaryNode<T> | null;
|
|
5
|
+
protected _parent: AbstractBinaryNode<T> | null;
|
|
6
|
+
protected constructor(initialData: T);
|
|
7
|
+
get data(): T;
|
|
8
|
+
set data(value: T);
|
|
9
|
+
get left(): AbstractBinaryNode<T> | null;
|
|
10
|
+
set left(value: AbstractBinaryNode<T> | null);
|
|
11
|
+
get right(): AbstractBinaryNode<T> | null;
|
|
12
|
+
set right(value: AbstractBinaryNode<T> | null);
|
|
13
|
+
get parent(): AbstractBinaryNode<T> | null;
|
|
14
|
+
set parent(value: AbstractBinaryNode<T> | null);
|
|
15
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var AbstractBinaryNode = /** @class */ (function () {
|
|
4
|
+
function AbstractBinaryNode(initialData) {
|
|
5
|
+
this._data = initialData;
|
|
6
|
+
this._left = null;
|
|
7
|
+
this._right = null;
|
|
8
|
+
this._parent = null;
|
|
9
|
+
}
|
|
10
|
+
Object.defineProperty(AbstractBinaryNode.prototype, "data", {
|
|
11
|
+
get: function () {
|
|
12
|
+
return this._data;
|
|
13
|
+
},
|
|
14
|
+
set: function (value) {
|
|
15
|
+
this._data = value;
|
|
16
|
+
},
|
|
17
|
+
enumerable: false,
|
|
18
|
+
configurable: true
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(AbstractBinaryNode.prototype, "left", {
|
|
21
|
+
get: function () {
|
|
22
|
+
return this._left;
|
|
23
|
+
},
|
|
24
|
+
set: function (value) {
|
|
25
|
+
this._left = value;
|
|
26
|
+
},
|
|
27
|
+
enumerable: false,
|
|
28
|
+
configurable: true
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(AbstractBinaryNode.prototype, "right", {
|
|
31
|
+
get: function () {
|
|
32
|
+
return this._right;
|
|
33
|
+
},
|
|
34
|
+
set: function (value) {
|
|
35
|
+
this._right = value;
|
|
36
|
+
},
|
|
37
|
+
enumerable: false,
|
|
38
|
+
configurable: true
|
|
39
|
+
});
|
|
40
|
+
Object.defineProperty(AbstractBinaryNode.prototype, "parent", {
|
|
41
|
+
get: function () {
|
|
42
|
+
return this._parent;
|
|
43
|
+
},
|
|
44
|
+
set: function (value) {
|
|
45
|
+
this._parent = value;
|
|
46
|
+
},
|
|
47
|
+
enumerable: false,
|
|
48
|
+
configurable: true
|
|
49
|
+
});
|
|
50
|
+
return AbstractBinaryNode;
|
|
51
|
+
}());
|
|
52
|
+
exports.default = AbstractBinaryNode;
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RCaW5hcnlOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGEtc3RydWN0dXJlcy9CaW5hcnlUcmVlL0Fic3RyYWN0QmluYXJ5VHJlZS9BYnN0cmFjdEJpbmFyeU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTtJQU1FLDRCQUFzQixXQUFjO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxzQkFBVyxvQ0FBSTthQUFmO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7YUFFRCxVQUFnQixLQUFRO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7OztPQUpBO0lBTUQsc0JBQVcsb0NBQUk7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO2FBRUQsVUFBZ0IsS0FBbUM7WUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQzs7O09BSkE7SUFNRCxzQkFBVyxxQ0FBSzthQUFoQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDO2FBRUQsVUFBaUIsS0FBbUM7WUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQzs7O09BSkE7SUFNRCxzQkFBVyxzQ0FBTTthQUFqQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN0QixDQUFDO2FBRUQsVUFBa0IsS0FBbUM7WUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQzs7O09BSkE7SUFLSCx5QkFBQztBQUFELENBQUMsQUE1Q0QsSUE0Q0MifQ==
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import IBinaryTree from "../../../types/IBinaryTree";
|
|
2
|
+
import { FnCompareTwo } from "../../../types/FnCompareTwo";
|
|
3
|
+
import AbstractBinaryNode from "./AbstractBinaryNode";
|
|
4
|
+
import { EnumTreeTraversalType } from "../../../types/EnumTreeTraversalType";
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
export default abstract class AbstractBinaryTree<T> implements IBinaryTree<T> {
|
|
9
|
+
/**
|
|
10
|
+
* Function that checks is node A better
|
|
11
|
+
* @default a > b
|
|
12
|
+
* @example 5 > 4
|
|
13
|
+
* @example 'abc' > 'aba'
|
|
14
|
+
*/
|
|
15
|
+
protected compare: FnCompareTwo<T>;
|
|
16
|
+
protected _head: AbstractBinaryNode<T> | null;
|
|
17
|
+
protected _length: number;
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
* @param fnCompare
|
|
21
|
+
* @protected
|
|
22
|
+
*/
|
|
23
|
+
protected constructor(fnCompare?: FnCompareTwo<T>);
|
|
24
|
+
/**
|
|
25
|
+
* Returns nodes count in the entire tree
|
|
26
|
+
*/
|
|
27
|
+
length(): number;
|
|
28
|
+
/**
|
|
29
|
+
* Will create new node and place it according to the type of tree rules
|
|
30
|
+
*/
|
|
31
|
+
abstract insert(value: T): void;
|
|
32
|
+
/**
|
|
33
|
+
* Will check if tree has a node with given data
|
|
34
|
+
*/
|
|
35
|
+
abstract has(value: T): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Will delete node from the tree and restructure it
|
|
38
|
+
*/
|
|
39
|
+
abstract delete(value: T): void;
|
|
40
|
+
/**
|
|
41
|
+
* Max value of the tree
|
|
42
|
+
*/
|
|
43
|
+
abstract max(): T;
|
|
44
|
+
/**
|
|
45
|
+
* Min value of the tree
|
|
46
|
+
*/
|
|
47
|
+
abstract min(): T;
|
|
48
|
+
/**
|
|
49
|
+
* Returns same class instance with new head node
|
|
50
|
+
*/
|
|
51
|
+
abstract subtree(value: T): IBinaryTree<T>;
|
|
52
|
+
/**
|
|
53
|
+
* Returns the highest branch length in the tree
|
|
54
|
+
*/
|
|
55
|
+
abstract height(): number;
|
|
56
|
+
/**
|
|
57
|
+
* In-order/Pre-order/Post-order traversing of the tree
|
|
58
|
+
*/
|
|
59
|
+
abstract traverse(type: EnumTreeTraversalType): Array<T>;
|
|
60
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
var AbstractBinaryTree = /** @class */ (function () {
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @param fnCompare
|
|
10
|
+
* @protected
|
|
11
|
+
*/
|
|
12
|
+
function AbstractBinaryTree(fnCompare) {
|
|
13
|
+
/**
|
|
14
|
+
* Function that checks is node A better
|
|
15
|
+
* @default a > b
|
|
16
|
+
* @example 5 > 4
|
|
17
|
+
* @example 'abc' > 'aba'
|
|
18
|
+
*/
|
|
19
|
+
this.compare = function (a, b) { return a > b; };
|
|
20
|
+
if (fnCompare) {
|
|
21
|
+
this.compare = fnCompare;
|
|
22
|
+
console.log(this.compare);
|
|
23
|
+
}
|
|
24
|
+
this._head = null;
|
|
25
|
+
this._length = 0;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Returns nodes count in the entire tree
|
|
29
|
+
*/
|
|
30
|
+
AbstractBinaryTree.prototype.length = function () {
|
|
31
|
+
return this._length;
|
|
32
|
+
};
|
|
33
|
+
return AbstractBinaryTree;
|
|
34
|
+
}());
|
|
35
|
+
exports.default = AbstractBinaryTree;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RCaW5hcnlUcmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGEtc3RydWN0dXJlcy9CaW5hcnlUcmVlL0Fic3RyYWN0QmluYXJ5VHJlZS9BYnN0cmFjdEJpbmFyeVRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQTs7R0FFRztBQUNIO0lBV0U7Ozs7T0FJRztJQUNILDRCQUFzQixTQUEyQjtRQWZqRDs7Ozs7V0FLRztRQUNPLFlBQU8sR0FBb0IsVUFBQyxDQUFJLEVBQUUsQ0FBSSxJQUFLLE9BQUEsQ0FBQyxHQUFHLENBQUMsRUFBTCxDQUFLLENBQUM7UUFVekQsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNJLG1DQUFNLEdBQWI7UUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQXlDSCx5QkFBQztBQUFELENBQUMsQUF2RUQsSUF1RUMifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import AbstractBinaryNode from "../AbstractBinaryTree/AbstractBinaryNode";
|
|
2
|
+
export default class BinarySearchNode<T> extends AbstractBinaryNode<T> {
|
|
3
|
+
protected _left: BinarySearchNode<T> | null;
|
|
4
|
+
protected _right: BinarySearchNode<T> | null;
|
|
5
|
+
protected _parent: BinarySearchNode<T> | null;
|
|
6
|
+
constructor(initialData: T);
|
|
7
|
+
get left(): BinarySearchNode<T> | null;
|
|
8
|
+
set left(value: BinarySearchNode<T> | null);
|
|
9
|
+
get right(): BinarySearchNode<T> | null;
|
|
10
|
+
set right(value: BinarySearchNode<T> | null);
|
|
11
|
+
get parent(): BinarySearchNode<T> | null;
|
|
12
|
+
set parent(value: BinarySearchNode<T> | null);
|
|
13
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || (function () {
|
|
3
|
+
var extendStatics = function (d, b) {
|
|
4
|
+
extendStatics = Object.setPrototypeOf ||
|
|
5
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
6
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
7
|
+
return extendStatics(d, b);
|
|
8
|
+
};
|
|
9
|
+
return function (d, b) {
|
|
10
|
+
extendStatics(d, b);
|
|
11
|
+
function __() { this.constructor = d; }
|
|
12
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
var AbstractBinaryNode_1 = require("../AbstractBinaryTree/AbstractBinaryNode");
|
|
17
|
+
var BinarySearchNode = /** @class */ (function (_super) {
|
|
18
|
+
__extends(BinarySearchNode, _super);
|
|
19
|
+
function BinarySearchNode(initialData) {
|
|
20
|
+
var _this = _super.call(this, initialData) || this;
|
|
21
|
+
_this._left = null;
|
|
22
|
+
_this._right = null;
|
|
23
|
+
_this._parent = null;
|
|
24
|
+
return _this;
|
|
25
|
+
}
|
|
26
|
+
Object.defineProperty(BinarySearchNode.prototype, "left", {
|
|
27
|
+
get: function () {
|
|
28
|
+
return this._left;
|
|
29
|
+
},
|
|
30
|
+
set: function (value) {
|
|
31
|
+
this._left = value;
|
|
32
|
+
},
|
|
33
|
+
enumerable: false,
|
|
34
|
+
configurable: true
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(BinarySearchNode.prototype, "right", {
|
|
37
|
+
get: function () {
|
|
38
|
+
return this._right;
|
|
39
|
+
},
|
|
40
|
+
set: function (value) {
|
|
41
|
+
this._right = value;
|
|
42
|
+
},
|
|
43
|
+
enumerable: false,
|
|
44
|
+
configurable: true
|
|
45
|
+
});
|
|
46
|
+
Object.defineProperty(BinarySearchNode.prototype, "parent", {
|
|
47
|
+
get: function () {
|
|
48
|
+
return this._parent;
|
|
49
|
+
},
|
|
50
|
+
set: function (value) {
|
|
51
|
+
this._parent = value;
|
|
52
|
+
},
|
|
53
|
+
enumerable: false,
|
|
54
|
+
configurable: true
|
|
55
|
+
});
|
|
56
|
+
return BinarySearchNode;
|
|
57
|
+
}(AbstractBinaryNode_1.default));
|
|
58
|
+
exports.default = BinarySearchNode;
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5U2VhcmNoTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhLXN0cnVjdHVyZXMvQmluYXJ5VHJlZS9CaW5hcnlTZWFyY2hUcmVlL0JpbmFyeVNlYXJjaE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0VBQTBFO0FBRTFFO0lBQWlELG9DQUFxQjtJQUtwRSwwQkFBbUIsV0FBYztRQUFqQyxZQUNFLGtCQUFNLFdBQVcsQ0FBQyxTQUluQjtRQUhDLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLEtBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLEtBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDOztJQUN0QixDQUFDO0lBRUQsc0JBQVcsa0NBQUk7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO2FBRUQsVUFBZ0IsS0FBaUM7WUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQzs7O09BSkE7SUFNRCxzQkFBVyxtQ0FBSzthQUFoQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDO2FBRUQsVUFBaUIsS0FBaUM7WUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQzs7O09BSkE7SUFNRCxzQkFBVyxvQ0FBTTthQUFqQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN0QixDQUFDO2FBRUQsVUFBa0IsS0FBaUM7WUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQzs7O09BSkE7SUFLSCx1QkFBQztBQUFELENBQUMsQUFuQ0QsQ0FBaUQsNEJBQWtCLEdBbUNsRSJ9
|