trie-typed 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. package/dist/cjs/index.cjs +797 -0
  2. package/dist/cjs/index.cjs.map +1 -0
  3. package/dist/cjs-legacy/index.cjs +795 -0
  4. package/dist/cjs-legacy/index.cjs.map +1 -0
  5. package/dist/esm/index.mjs +792 -0
  6. package/dist/esm/index.mjs.map +1 -0
  7. package/dist/esm-legacy/index.mjs +790 -0
  8. package/dist/esm-legacy/index.mjs.map +1 -0
  9. package/dist/types/data-structures/base/index.d.ts +2 -1
  10. package/dist/types/data-structures/binary-tree/avl-tree-counter.d.ts +236 -2
  11. package/dist/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +197 -2
  12. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +345 -2
  13. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +174 -1
  14. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +754 -29
  15. package/dist/types/data-structures/binary-tree/bst.d.ts +467 -12
  16. package/dist/types/data-structures/binary-tree/index.d.ts +3 -2
  17. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +262 -3
  18. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +160 -1
  19. package/dist/types/data-structures/binary-tree/tree-counter.d.ts +244 -2
  20. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +332 -2
  21. package/dist/types/data-structures/graph/abstract-graph.d.ts +340 -14
  22. package/dist/types/data-structures/graph/directed-graph.d.ts +207 -1
  23. package/dist/types/data-structures/graph/index.d.ts +2 -1
  24. package/dist/types/data-structures/graph/map-graph.d.ts +78 -1
  25. package/dist/types/data-structures/graph/undirected-graph.d.ts +188 -1
  26. package/dist/types/data-structures/hash/hash-map.d.ts +345 -19
  27. package/dist/types/data-structures/hash/index.d.ts +0 -1
  28. package/dist/types/data-structures/heap/heap.d.ts +503 -5
  29. package/dist/types/data-structures/heap/index.d.ts +2 -0
  30. package/dist/types/data-structures/heap/max-heap.d.ts +32 -1
  31. package/dist/types/data-structures/heap/min-heap.d.ts +33 -1
  32. package/dist/types/data-structures/index.d.ts +7 -7
  33. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +769 -2
  34. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +451 -2
  35. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +27 -4
  36. package/dist/types/data-structures/matrix/index.d.ts +1 -1
  37. package/dist/types/data-structures/matrix/matrix.d.ts +168 -7
  38. package/dist/types/data-structures/matrix/navigator.d.ts +54 -13
  39. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +27 -1
  40. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +26 -1
  41. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +15 -2
  42. package/dist/types/data-structures/queue/deque.d.ts +431 -4
  43. package/dist/types/data-structures/queue/queue.d.ts +308 -4
  44. package/dist/types/data-structures/stack/stack.d.ts +306 -2
  45. package/dist/types/data-structures/tree/tree.d.ts +62 -1
  46. package/dist/types/data-structures/trie/trie.d.ts +350 -4
  47. package/dist/types/index.d.ts +11 -2
  48. package/dist/{interfaces → types/interfaces}/binary-tree.d.ts +1 -1
  49. package/dist/types/types/data-structures/base/index.d.ts +1 -0
  50. package/dist/types/types/data-structures/binary-tree/avl-tree-counter.d.ts +2 -0
  51. package/dist/types/types/data-structures/binary-tree/avl-tree-multi-map.d.ts +2 -0
  52. package/dist/types/types/data-structures/binary-tree/avl-tree.d.ts +2 -0
  53. package/dist/types/types/data-structures/binary-tree/binary-indexed-tree.d.ts +1 -0
  54. package/dist/types/types/data-structures/binary-tree/binary-tree.d.ts +29 -0
  55. package/dist/types/types/data-structures/binary-tree/bst.d.ts +12 -0
  56. package/dist/{data-structures → types/types/data-structures}/binary-tree/index.d.ts +2 -3
  57. package/dist/types/types/data-structures/binary-tree/red-black-tree.d.ts +3 -0
  58. package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -0
  59. package/dist/types/types/data-structures/binary-tree/tree-counter.d.ts +2 -0
  60. package/dist/types/types/data-structures/binary-tree/tree-multi-map.d.ts +2 -0
  61. package/dist/types/types/data-structures/graph/abstract-graph.d.ts +14 -0
  62. package/dist/types/types/data-structures/graph/directed-graph.d.ts +1 -0
  63. package/dist/{data-structures → types/types/data-structures}/graph/index.d.ts +1 -2
  64. package/dist/types/types/data-structures/graph/map-graph.d.ts +1 -0
  65. package/dist/types/types/data-structures/graph/undirected-graph.d.ts +1 -0
  66. package/dist/types/types/data-structures/hash/hash-map.d.ts +19 -0
  67. package/dist/types/types/data-structures/hash/index.d.ts +2 -0
  68. package/dist/types/types/data-structures/heap/heap.d.ts +5 -0
  69. package/dist/types/types/data-structures/heap/index.d.ts +1 -0
  70. package/dist/types/types/data-structures/heap/max-heap.d.ts +1 -0
  71. package/dist/types/types/data-structures/heap/min-heap.d.ts +1 -0
  72. package/dist/types/types/data-structures/linked-list/doubly-linked-list.d.ts +2 -0
  73. package/dist/types/types/data-structures/linked-list/singly-linked-list.d.ts +2 -0
  74. package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +4 -0
  75. package/dist/types/types/data-structures/matrix/matrix.d.ts +7 -0
  76. package/dist/types/types/data-structures/matrix/navigator.d.ts +14 -0
  77. package/dist/types/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -0
  78. package/dist/types/types/data-structures/priority-queue/min-priority-queue.d.ts +1 -0
  79. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +2 -0
  80. package/dist/types/types/data-structures/queue/deque.d.ts +4 -0
  81. package/dist/types/types/data-structures/queue/queue.d.ts +4 -0
  82. package/dist/types/types/data-structures/stack/stack.d.ts +2 -0
  83. package/dist/types/types/data-structures/tree/tree.d.ts +1 -0
  84. package/dist/types/types/data-structures/trie/trie.d.ts +4 -0
  85. package/dist/types/types/index.d.ts +3 -0
  86. package/dist/types/types/utils/index.d.ts +2 -0
  87. package/dist/types/types/utils/utils.d.ts +22 -0
  88. package/dist/types/utils/index.d.ts +1 -1
  89. package/dist/types/utils/utils.d.ts +209 -22
  90. package/dist/umd/trie-typed.js +802 -0
  91. package/dist/umd/trie-typed.js.map +1 -0
  92. package/dist/umd/trie-typed.min.js +9 -0
  93. package/dist/umd/trie-typed.min.js.map +1 -0
  94. package/package.json +43 -5
  95. package/src/data-structures/binary-tree/avl-tree-counter.ts +106 -15
  96. package/src/data-structures/binary-tree/avl-tree-multi-map.ts +116 -12
  97. package/src/data-structures/binary-tree/avl-tree.ts +107 -16
  98. package/src/data-structures/binary-tree/binary-tree.ts +4 -4
  99. package/src/data-structures/binary-tree/bst.ts +103 -12
  100. package/src/data-structures/binary-tree/red-black-tree.ts +110 -20
  101. package/src/data-structures/binary-tree/tree-counter.ts +105 -14
  102. package/src/data-structures/binary-tree/tree-multi-map.ts +123 -12
  103. package/src/data-structures/graph/abstract-graph.ts +5 -5
  104. package/src/data-structures/graph/directed-graph.ts +5 -5
  105. package/src/data-structures/graph/undirected-graph.ts +5 -5
  106. package/src/data-structures/heap/heap.ts +5 -5
  107. package/src/data-structures/linked-list/singly-linked-list.ts +2 -2
  108. package/src/interfaces/binary-tree.ts +1 -1
  109. package/tsconfig.base.json +23 -0
  110. package/tsconfig.json +8 -34
  111. package/tsconfig.test.json +8 -0
  112. package/tsconfig.types.json +15 -0
  113. package/tsup.config.js +28 -0
  114. package/tsup.node.config.js +71 -0
  115. package/dist/common/index.js +0 -28
  116. package/dist/constants/index.js +0 -8
  117. package/dist/data-structures/base/index.d.ts +0 -2
  118. package/dist/data-structures/base/index.js +0 -18
  119. package/dist/data-structures/base/iterable-element-base.js +0 -243
  120. package/dist/data-structures/base/iterable-entry-base.js +0 -183
  121. package/dist/data-structures/base/linear-base.js +0 -415
  122. package/dist/data-structures/binary-tree/avl-tree-counter.d.ts +0 -182
  123. package/dist/data-structures/binary-tree/avl-tree-counter.js +0 -374
  124. package/dist/data-structures/binary-tree/avl-tree-multi-map.d.ts +0 -135
  125. package/dist/data-structures/binary-tree/avl-tree-multi-map.js +0 -250
  126. package/dist/data-structures/binary-tree/avl-tree.d.ts +0 -291
  127. package/dist/data-structures/binary-tree/avl-tree.js +0 -611
  128. package/dist/data-structures/binary-tree/binary-indexed-tree.d.ts +0 -174
  129. package/dist/data-structures/binary-tree/binary-indexed-tree.js +0 -294
  130. package/dist/data-structures/binary-tree/binary-tree.d.ts +0 -754
  131. package/dist/data-structures/binary-tree/binary-tree.js +0 -1925
  132. package/dist/data-structures/binary-tree/bst.d.ts +0 -413
  133. package/dist/data-structures/binary-tree/bst.js +0 -903
  134. package/dist/data-structures/binary-tree/index.js +0 -26
  135. package/dist/data-structures/binary-tree/red-black-tree.d.ts +0 -208
  136. package/dist/data-structures/binary-tree/red-black-tree.js +0 -546
  137. package/dist/data-structures/binary-tree/segment-tree.d.ts +0 -160
  138. package/dist/data-structures/binary-tree/segment-tree.js +0 -297
  139. package/dist/data-structures/binary-tree/tree-counter.d.ts +0 -190
  140. package/dist/data-structures/binary-tree/tree-counter.js +0 -413
  141. package/dist/data-structures/binary-tree/tree-multi-map.d.ts +0 -270
  142. package/dist/data-structures/binary-tree/tree-multi-map.js +0 -384
  143. package/dist/data-structures/graph/abstract-graph.d.ts +0 -340
  144. package/dist/data-structures/graph/abstract-graph.js +0 -896
  145. package/dist/data-structures/graph/directed-graph.d.ts +0 -207
  146. package/dist/data-structures/graph/directed-graph.js +0 -525
  147. package/dist/data-structures/graph/index.js +0 -20
  148. package/dist/data-structures/graph/map-graph.d.ts +0 -78
  149. package/dist/data-structures/graph/map-graph.js +0 -107
  150. package/dist/data-structures/graph/undirected-graph.d.ts +0 -188
  151. package/dist/data-structures/graph/undirected-graph.js +0 -424
  152. package/dist/data-structures/hash/hash-map.d.ts +0 -345
  153. package/dist/data-structures/hash/hash-map.js +0 -692
  154. package/dist/data-structures/hash/index.d.ts +0 -1
  155. package/dist/data-structures/hash/index.js +0 -17
  156. package/dist/data-structures/heap/heap.d.ts +0 -503
  157. package/dist/data-structures/heap/heap.js +0 -901
  158. package/dist/data-structures/heap/index.d.ts +0 -3
  159. package/dist/data-structures/heap/index.js +0 -19
  160. package/dist/data-structures/heap/max-heap.d.ts +0 -32
  161. package/dist/data-structures/heap/max-heap.js +0 -40
  162. package/dist/data-structures/heap/min-heap.d.ts +0 -33
  163. package/dist/data-structures/heap/min-heap.js +0 -31
  164. package/dist/data-structures/index.js +0 -28
  165. package/dist/data-structures/linked-list/doubly-linked-list.d.ts +0 -769
  166. package/dist/data-structures/linked-list/doubly-linked-list.js +0 -1111
  167. package/dist/data-structures/linked-list/index.js +0 -19
  168. package/dist/data-structures/linked-list/singly-linked-list.d.ts +0 -451
  169. package/dist/data-structures/linked-list/singly-linked-list.js +0 -850
  170. package/dist/data-structures/linked-list/skip-linked-list.d.ts +0 -27
  171. package/dist/data-structures/linked-list/skip-linked-list.js +0 -144
  172. package/dist/data-structures/matrix/index.js +0 -18
  173. package/dist/data-structures/matrix/matrix.d.ts +0 -168
  174. package/dist/data-structures/matrix/matrix.js +0 -448
  175. package/dist/data-structures/matrix/navigator.d.ts +0 -55
  176. package/dist/data-structures/matrix/navigator.js +0 -111
  177. package/dist/data-structures/priority-queue/index.js +0 -19
  178. package/dist/data-structures/priority-queue/max-priority-queue.d.ts +0 -27
  179. package/dist/data-structures/priority-queue/max-priority-queue.js +0 -34
  180. package/dist/data-structures/priority-queue/min-priority-queue.d.ts +0 -26
  181. package/dist/data-structures/priority-queue/min-priority-queue.js +0 -24
  182. package/dist/data-structures/priority-queue/priority-queue.d.ts +0 -15
  183. package/dist/data-structures/priority-queue/priority-queue.js +0 -20
  184. package/dist/data-structures/queue/deque.d.ts +0 -431
  185. package/dist/data-structures/queue/deque.js +0 -879
  186. package/dist/data-structures/queue/index.js +0 -18
  187. package/dist/data-structures/queue/queue.d.ts +0 -308
  188. package/dist/data-structures/queue/queue.js +0 -473
  189. package/dist/data-structures/stack/index.js +0 -17
  190. package/dist/data-structures/stack/stack.d.ts +0 -306
  191. package/dist/data-structures/stack/stack.js +0 -401
  192. package/dist/data-structures/tree/index.js +0 -17
  193. package/dist/data-structures/tree/tree.d.ts +0 -62
  194. package/dist/data-structures/tree/tree.js +0 -107
  195. package/dist/data-structures/trie/index.js +0 -17
  196. package/dist/data-structures/trie/trie.d.ts +0 -350
  197. package/dist/data-structures/trie/trie.js +0 -610
  198. package/dist/index.d.ts +0 -12
  199. package/dist/index.js +0 -28
  200. package/dist/interfaces/binary-tree.js +0 -2
  201. package/dist/interfaces/doubly-linked-list.js +0 -2
  202. package/dist/interfaces/graph.js +0 -2
  203. package/dist/interfaces/heap.js +0 -2
  204. package/dist/interfaces/index.js +0 -24
  205. package/dist/interfaces/navigator.js +0 -2
  206. package/dist/interfaces/priority-queue.js +0 -2
  207. package/dist/interfaces/segment-tree.js +0 -2
  208. package/dist/interfaces/singly-linked-list.js +0 -2
  209. package/dist/types/common.js +0 -2
  210. package/dist/types/data-structures/base/base.js +0 -2
  211. package/dist/types/data-structures/base/index.js +0 -17
  212. package/dist/types/data-structures/binary-tree/avl-tree-counter.js +0 -2
  213. package/dist/types/data-structures/binary-tree/avl-tree-multi-map.js +0 -2
  214. package/dist/types/data-structures/binary-tree/avl-tree.js +0 -2
  215. package/dist/types/data-structures/binary-tree/binary-indexed-tree.js +0 -2
  216. package/dist/types/data-structures/binary-tree/binary-tree.js +0 -2
  217. package/dist/types/data-structures/binary-tree/bst.js +0 -2
  218. package/dist/types/data-structures/binary-tree/index.js +0 -25
  219. package/dist/types/data-structures/binary-tree/red-black-tree.js +0 -2
  220. package/dist/types/data-structures/binary-tree/segment-tree.js +0 -2
  221. package/dist/types/data-structures/binary-tree/tree-counter.js +0 -2
  222. package/dist/types/data-structures/binary-tree/tree-multi-map.js +0 -2
  223. package/dist/types/data-structures/graph/abstract-graph.js +0 -2
  224. package/dist/types/data-structures/graph/directed-graph.js +0 -2
  225. package/dist/types/data-structures/graph/index.js +0 -19
  226. package/dist/types/data-structures/graph/map-graph.js +0 -2
  227. package/dist/types/data-structures/graph/undirected-graph.js +0 -2
  228. package/dist/types/data-structures/hash/hash-map.js +0 -2
  229. package/dist/types/data-structures/hash/index.js +0 -17
  230. package/dist/types/data-structures/heap/heap.js +0 -2
  231. package/dist/types/data-structures/heap/index.js +0 -17
  232. package/dist/types/data-structures/heap/max-heap.js +0 -2
  233. package/dist/types/data-structures/heap/min-heap.js +0 -2
  234. package/dist/types/data-structures/index.js +0 -28
  235. package/dist/types/data-structures/linked-list/doubly-linked-list.js +0 -2
  236. package/dist/types/data-structures/linked-list/index.js +0 -19
  237. package/dist/types/data-structures/linked-list/singly-linked-list.js +0 -2
  238. package/dist/types/data-structures/linked-list/skip-linked-list.js +0 -2
  239. package/dist/types/data-structures/matrix/index.js +0 -18
  240. package/dist/types/data-structures/matrix/matrix.js +0 -2
  241. package/dist/types/data-structures/matrix/navigator.js +0 -2
  242. package/dist/types/data-structures/priority-queue/index.js +0 -19
  243. package/dist/types/data-structures/priority-queue/max-priority-queue.js +0 -2
  244. package/dist/types/data-structures/priority-queue/min-priority-queue.js +0 -2
  245. package/dist/types/data-structures/priority-queue/priority-queue.js +0 -2
  246. package/dist/types/data-structures/queue/deque.js +0 -2
  247. package/dist/types/data-structures/queue/index.js +0 -18
  248. package/dist/types/data-structures/queue/queue.js +0 -2
  249. package/dist/types/data-structures/stack/index.js +0 -17
  250. package/dist/types/data-structures/stack/stack.js +0 -2
  251. package/dist/types/data-structures/tree/index.js +0 -17
  252. package/dist/types/data-structures/tree/tree.js +0 -2
  253. package/dist/types/data-structures/trie/index.js +0 -17
  254. package/dist/types/data-structures/trie/trie.js +0 -2
  255. package/dist/types/index.js +0 -19
  256. package/dist/types/utils/index.js +0 -18
  257. package/dist/types/utils/utils.js +0 -2
  258. package/dist/types/utils/validate-type.js +0 -2
  259. package/dist/utils/index.d.ts +0 -2
  260. package/dist/utils/index.js +0 -18
  261. package/dist/utils/number.js +0 -24
  262. package/dist/utils/utils.d.ts +0 -209
  263. package/dist/utils/utils.js +0 -353
  264. package/dist/{common → types/common}/index.d.ts +0 -0
  265. package/dist/{constants → types/constants}/index.d.ts +0 -0
  266. package/dist/{data-structures → types/data-structures}/base/iterable-element-base.d.ts +0 -0
  267. package/dist/{data-structures → types/data-structures}/base/iterable-entry-base.d.ts +0 -0
  268. package/dist/{data-structures → types/data-structures}/base/linear-base.d.ts +0 -0
  269. package/dist/{interfaces → types/interfaces}/doubly-linked-list.d.ts +0 -0
  270. package/dist/{interfaces → types/interfaces}/graph.d.ts +0 -0
  271. package/dist/{interfaces → types/interfaces}/heap.d.ts +0 -0
  272. package/dist/{interfaces → types/interfaces}/index.d.ts +0 -0
  273. package/dist/{interfaces → types/interfaces}/navigator.d.ts +0 -0
  274. package/dist/{interfaces → types/interfaces}/priority-queue.d.ts +0 -0
  275. package/dist/{interfaces → types/interfaces}/segment-tree.d.ts +0 -0
  276. package/dist/{interfaces → types/interfaces}/singly-linked-list.d.ts +0 -0
  277. package/dist/types/{common.d.ts → types/common.d.ts} +0 -0
  278. package/dist/types/{data-structures → types/data-structures}/base/base.d.ts +0 -0
  279. package/dist/{data-structures → types/types/data-structures}/index.d.ts +7 -7
  280. package/dist/{data-structures → types/types/data-structures}/linked-list/index.d.ts +0 -0
  281. package/dist/{data-structures → types/types/data-structures}/matrix/index.d.ts +1 -1
  282. /package/dist/{data-structures → types/types/data-structures}/priority-queue/index.d.ts +0 -0
  283. /package/dist/{data-structures → types/types/data-structures}/queue/index.d.ts +0 -0
  284. /package/dist/{data-structures → types/types/data-structures}/stack/index.d.ts +0 -0
  285. /package/dist/{data-structures → types/types/data-structures}/tree/index.d.ts +0 -0
  286. /package/dist/{data-structures → types/types/data-structures}/trie/index.d.ts +0 -0
  287. /package/dist/types/{utils → types/utils}/validate-type.d.ts +0 -0
  288. /package/dist/{utils → types/utils}/number.d.ts +0 -0
@@ -1,27 +0,0 @@
1
- import type { SkipLinkedListOptions } from '../../types';
2
- export declare class SkipListNode<K, V> {
3
- key: K;
4
- value: V;
5
- forward: SkipListNode<K, V>[];
6
- constructor(key: K, value: V, level: number);
7
- }
8
- export declare class SkipList<K, V> {
9
- constructor(elements?: Iterable<[K, V]>, options?: SkipLinkedListOptions);
10
- protected _head: SkipListNode<K, V>;
11
- get head(): SkipListNode<K, V>;
12
- protected _level: number;
13
- get level(): number;
14
- protected _maxLevel: number;
15
- get maxLevel(): number;
16
- protected _probability: number;
17
- get probability(): number;
18
- get first(): V | undefined;
19
- get last(): V | undefined;
20
- add(key: K, value: V): void;
21
- get(key: K): V | undefined;
22
- has(key: K): boolean;
23
- delete(key: K): boolean;
24
- higher(key: K): V | undefined;
25
- lower(key: K): V | undefined;
26
- protected _randomLevel(): number;
27
- }
@@ -1,144 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SkipList = exports.SkipListNode = void 0;
4
- class SkipListNode {
5
- constructor(key, value, level) {
6
- this.key = key;
7
- this.value = value;
8
- this.forward = new Array(level);
9
- }
10
- }
11
- exports.SkipListNode = SkipListNode;
12
- class SkipList {
13
- constructor(elements = [], options) {
14
- this._head = new SkipListNode(undefined, undefined, this.maxLevel);
15
- this._level = 0;
16
- this._maxLevel = 16;
17
- this._probability = 0.5;
18
- if (options) {
19
- const { maxLevel, probability } = options;
20
- if (typeof maxLevel === 'number')
21
- this._maxLevel = maxLevel;
22
- if (typeof probability === 'number')
23
- this._probability = probability;
24
- }
25
- if (elements) {
26
- for (const [key, value] of elements)
27
- this.add(key, value);
28
- }
29
- }
30
- get head() {
31
- return this._head;
32
- }
33
- get level() {
34
- return this._level;
35
- }
36
- get maxLevel() {
37
- return this._maxLevel;
38
- }
39
- get probability() {
40
- return this._probability;
41
- }
42
- get first() {
43
- const firstNode = this.head.forward[0];
44
- return firstNode ? firstNode.value : undefined;
45
- }
46
- get last() {
47
- let current = this.head;
48
- for (let i = this.level - 1; i >= 0; i--) {
49
- while (current.forward[i]) {
50
- current = current.forward[i];
51
- }
52
- }
53
- return current.value;
54
- }
55
- add(key, value) {
56
- const newNode = new SkipListNode(key, value, this._randomLevel());
57
- const update = new Array(this.maxLevel).fill(this.head);
58
- let current = this.head;
59
- for (let i = this.level - 1; i >= 0; i--) {
60
- while (current.forward[i] && current.forward[i].key < key) {
61
- current = current.forward[i];
62
- }
63
- update[i] = current;
64
- }
65
- for (let i = 0; i < newNode.forward.length; i++) {
66
- newNode.forward[i] = update[i].forward[i];
67
- update[i].forward[i] = newNode;
68
- }
69
- if (!newNode.forward[0]) {
70
- this._level = Math.max(this.level, newNode.forward.length);
71
- }
72
- }
73
- get(key) {
74
- let current = this.head;
75
- for (let i = this.level - 1; i >= 0; i--) {
76
- while (current.forward[i] && current.forward[i].key < key) {
77
- current = current.forward[i];
78
- }
79
- }
80
- current = current.forward[0];
81
- if (current && current.key === key) {
82
- return current.value;
83
- }
84
- return undefined;
85
- }
86
- has(key) {
87
- return this.get(key) !== undefined;
88
- }
89
- delete(key) {
90
- const update = new Array(this.maxLevel).fill(this.head);
91
- let current = this.head;
92
- for (let i = this.level - 1; i >= 0; i--) {
93
- while (current.forward[i] && current.forward[i].key < key) {
94
- current = current.forward[i];
95
- }
96
- update[i] = current;
97
- }
98
- current = current.forward[0];
99
- if (current && current.key === key) {
100
- for (let i = 0; i < this.level; i++) {
101
- if (update[i].forward[i] !== current) {
102
- break;
103
- }
104
- update[i].forward[i] = current.forward[i];
105
- }
106
- while (this.level > 0 && !this.head.forward[this.level - 1]) {
107
- this._level--;
108
- }
109
- return true;
110
- }
111
- return false;
112
- }
113
- higher(key) {
114
- let current = this.head;
115
- for (let i = this.level - 1; i >= 0; i--) {
116
- while (current.forward[i] && current.forward[i].key <= key) {
117
- current = current.forward[i];
118
- }
119
- }
120
- const nextNode = current.forward[0];
121
- return nextNode ? nextNode.value : undefined;
122
- }
123
- lower(key) {
124
- let current = this.head;
125
- let lastLess = undefined;
126
- for (let i = this.level - 1; i >= 0; i--) {
127
- while (current.forward[i] && current.forward[i].key < key) {
128
- current = current.forward[i];
129
- }
130
- if (current.key < key) {
131
- lastLess = current;
132
- }
133
- }
134
- return lastLess ? lastLess.value : undefined;
135
- }
136
- _randomLevel() {
137
- let level = 1;
138
- while (Math.random() < this.probability && level < this.maxLevel) {
139
- level++;
140
- }
141
- return level;
142
- }
143
- }
144
- exports.SkipList = SkipList;
@@ -1,18 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./matrix"), exports);
18
- __exportStar(require("./navigator"), exports);
@@ -1,168 +0,0 @@
1
- /**
2
- * data-structure-typed
3
- *
4
- * @author Pablo Zeng
5
- * @copyright Copyright (c) 2022 Pablo Zeng <zrwusa@gmail.com>
6
- * @license MIT License
7
- */
8
- import type { MatrixOptions } from '../../types';
9
- /**
10
- *
11
- */
12
- export declare class Matrix {
13
- /**
14
- * The constructor function initializes a matrix object with the provided data and options, or with
15
- * default values if no options are provided.
16
- * @param {number[][]} data - A 2D array of numbers representing the data for the matrix.
17
- * @param [options] - The `options` parameter is an optional object that can contain the following
18
- * properties:
19
- */
20
- constructor(data: number[][], options?: MatrixOptions);
21
- protected _rows: number;
22
- /**
23
- * The function returns the number of rows.
24
- * @returns The number of rows.
25
- */
26
- get rows(): number;
27
- protected _cols: number;
28
- /**
29
- * The function returns the value of the protected variable _cols.
30
- * @returns The number of columns.
31
- */
32
- get cols(): number;
33
- protected _data: number[][];
34
- /**
35
- * The function returns a two-dimensional array of numbers.
36
- * @returns The data property, which is a two-dimensional array of numbers.
37
- */
38
- get data(): number[][];
39
- /**
40
- * The above function returns the value of the _addFn property.
41
- * @returns The value of the property `_addFn` is being returned.
42
- */
43
- get addFn(): (a: number | undefined, b: number) => number | undefined;
44
- /**
45
- * The function returns the value of the _subtractFn property.
46
- * @returns The `_subtractFn` property is being returned.
47
- */
48
- get subtractFn(): (a: number, b: number) => number;
49
- /**
50
- * The function returns the value of the _multiplyFn property.
51
- * @returns The `_multiplyFn` property is being returned.
52
- */
53
- get multiplyFn(): (a: number, b: number) => number;
54
- /**
55
- * The `get` function returns the value at the specified row and column index if it is a valid index.
56
- * @param {number} row - The `row` parameter represents the row index of the element you want to
57
- * retrieve from the data array.
58
- * @param {number} col - The parameter "col" represents the column number of the element you want to
59
- * retrieve from the data array.
60
- * @returns The `get` function returns a number if the provided row and column indices are valid.
61
- * Otherwise, it returns `undefined`.
62
- */
63
- get(row: number, col: number): number | undefined;
64
- /**
65
- * The set function updates the value at a specified row and column in a two-dimensional array.
66
- * @param {number} row - The "row" parameter represents the row index of the element in a
67
- * two-dimensional array or matrix. It specifies the row where the value will be set.
68
- * @param {number} col - The "col" parameter represents the column index of the element in a
69
- * two-dimensional array.
70
- * @param {number} value - The value parameter represents the number that you want to set at the
71
- * specified row and column in the data array.
72
- * @returns a boolean value. It returns true if the index (row, col) is valid and the value is
73
- * successfully set in the data array. It returns false if the index is invalid and the value is not
74
- * set.
75
- */
76
- set(row: number, col: number, value: number): boolean;
77
- /**
78
- * The function checks if the dimensions of the given matrix match the dimensions of the current
79
- * matrix.
80
- * @param {Matrix} matrix - The parameter `matrix` is of type `Matrix`.
81
- * @returns a boolean value.
82
- */
83
- isMatchForCalculate(matrix: Matrix): boolean;
84
- /**
85
- * The `add` function adds two matrices together, returning a new matrix with the result.
86
- * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class.
87
- * @returns The `add` method returns a new `Matrix` object that represents the result of adding the
88
- * current matrix with the provided `matrix` parameter.
89
- */
90
- add(matrix: Matrix): Matrix | undefined;
91
- /**
92
- * The `subtract` function performs element-wise subtraction between two matrices and returns a new
93
- * matrix with the result.
94
- * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class. It
95
- * represents the matrix that you want to subtract from the current matrix.
96
- * @returns a new Matrix object with the result of the subtraction operation.
97
- */
98
- subtract(matrix: Matrix): Matrix | undefined;
99
- /**
100
- * The `multiply` function performs matrix multiplication between two matrices and returns the result
101
- * as a new matrix.
102
- * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class.
103
- * @returns a new Matrix object.
104
- */
105
- multiply(matrix: Matrix): Matrix | undefined;
106
- /**
107
- * The transpose function takes a matrix and returns a new matrix that is the transpose of the
108
- * original matrix.
109
- * @returns The transpose() function returns a new Matrix object with the transposed data.
110
- */
111
- transpose(): Matrix;
112
- /**
113
- * The `inverse` function calculates the inverse of a square matrix using Gaussian elimination.
114
- * @returns a Matrix object, which represents the inverse of the original matrix.
115
- */
116
- inverse(): Matrix | undefined;
117
- /**
118
- * The dot function calculates the dot product of two matrices and returns a new matrix.
119
- * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class.
120
- * @returns a new Matrix object.
121
- */
122
- dot(matrix: Matrix): Matrix | undefined;
123
- /**
124
- * The function checks if a given row and column index is valid within a specified range.
125
- * @param {number} row - The `row` parameter represents the row index of a two-dimensional array or
126
- * matrix. It is a number that indicates the specific row in the matrix.
127
- * @param {number} col - The "col" parameter represents the column index in a two-dimensional array
128
- * or grid. It is used to check if the given column index is valid within the bounds of the grid.
129
- * @returns A boolean value is being returned.
130
- */
131
- isValidIndex(row: number, col: number): boolean;
132
- /**
133
- * The `clone` function returns a new instance of the Matrix class with the same data and properties
134
- * as the original instance.
135
- * @returns The `clone()` method is returning a new instance of the `Matrix` class with the same data
136
- * and properties as the current instance.
137
- */
138
- clone(): Matrix;
139
- protected _addFn(a: number | undefined, b: number): number | undefined;
140
- protected _subtractFn(a: number, b: number): number;
141
- protected _multiplyFn(a: number, b: number): number;
142
- /**
143
- * The function `_swapRows` swaps the positions of two rows in an array.
144
- * @param {number} row1 - The `row1` parameter is the index of the first row that you want to swap.
145
- * @param {number} row2 - The `row2` parameter is the index of the second row that you want to swap
146
- * with the first row.
147
- */
148
- protected _swapRows(row1: number, row2: number): void;
149
- /**
150
- * The function scales a specific row in a matrix by a given scalar value.
151
- * @param {number} row - The `row` parameter represents the index of the row in the matrix that you
152
- * want to scale. It is a number that indicates the position of the row within the matrix.
153
- * @param {number} scalar - The scalar parameter is a number that is used to multiply each element in
154
- * a specific row of a matrix.
155
- */
156
- protected _scaleRow(row: number, scalar: number): void;
157
- /**
158
- * The function `_addScaledRow` multiplies a row in a matrix by a scalar value and adds it to another
159
- * row.
160
- * @param {number} targetRow - The targetRow parameter represents the index of the row in which the
161
- * scaled values will be added.
162
- * @param {number} sourceRow - The sourceRow parameter represents the index of the row from which the
163
- * values will be scaled and added to the targetRow.
164
- * @param {number} scalar - The scalar parameter is a number that is used to scale the values in the
165
- * source row before adding them to the target row.
166
- */
167
- protected _addScaledRow(targetRow: number, sourceRow: number, scalar: number): void;
168
- }