data-structure-typed 2.6.0 → 2.6.2

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 (160) hide show
  1. package/.github/workflows/ci.yml +7 -2
  2. package/.github/workflows/release-package.yml +9 -2
  3. package/CHANGELOG.md +9 -1
  4. package/dist/cjs/binary-tree.cjs +2927 -23688
  5. package/dist/cjs/graph.cjs +845 -2634
  6. package/dist/cjs/hash.cjs +185 -616
  7. package/dist/cjs/heap.cjs +266 -818
  8. package/dist/cjs/index.cjs +5116 -31358
  9. package/dist/cjs/linked-list.cjs +644 -2615
  10. package/dist/cjs/matrix.cjs +220 -535
  11. package/dist/cjs/priority-queue.cjs +266 -818
  12. package/dist/cjs/queue.cjs +637 -2343
  13. package/dist/cjs/stack.cjs +124 -530
  14. package/dist/cjs/trie.cjs +145 -592
  15. package/dist/cjs-legacy/binary-tree.cjs +4352 -25113
  16. package/dist/cjs-legacy/graph.cjs +847 -2636
  17. package/dist/cjs-legacy/hash.cjs +181 -612
  18. package/dist/cjs-legacy/heap.cjs +266 -818
  19. package/dist/cjs-legacy/index.cjs +6657 -32899
  20. package/dist/cjs-legacy/linked-list.cjs +640 -2611
  21. package/dist/cjs-legacy/matrix.cjs +220 -535
  22. package/dist/cjs-legacy/priority-queue.cjs +266 -818
  23. package/dist/cjs-legacy/queue.cjs +634 -2340
  24. package/dist/cjs-legacy/stack.cjs +124 -530
  25. package/dist/cjs-legacy/trie.cjs +145 -592
  26. package/dist/esm/binary-tree.mjs +2927 -23688
  27. package/dist/esm/graph.mjs +845 -2634
  28. package/dist/esm/hash.mjs +185 -616
  29. package/dist/esm/heap.mjs +266 -818
  30. package/dist/esm/index.mjs +5116 -31358
  31. package/dist/esm/linked-list.mjs +644 -2615
  32. package/dist/esm/matrix.mjs +220 -535
  33. package/dist/esm/priority-queue.mjs +266 -818
  34. package/dist/esm/queue.mjs +637 -2343
  35. package/dist/esm/stack.mjs +124 -530
  36. package/dist/esm/trie.mjs +145 -592
  37. package/dist/esm-legacy/binary-tree.mjs +4352 -25113
  38. package/dist/esm-legacy/graph.mjs +847 -2636
  39. package/dist/esm-legacy/hash.mjs +181 -612
  40. package/dist/esm-legacy/heap.mjs +266 -818
  41. package/dist/esm-legacy/index.mjs +6657 -32899
  42. package/dist/esm-legacy/linked-list.mjs +640 -2611
  43. package/dist/esm-legacy/matrix.mjs +220 -535
  44. package/dist/esm-legacy/priority-queue.mjs +266 -818
  45. package/dist/esm-legacy/queue.mjs +634 -2340
  46. package/dist/esm-legacy/stack.mjs +124 -530
  47. package/dist/esm-legacy/trie.mjs +145 -592
  48. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +29 -500
  49. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +38 -563
  50. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +230 -1212
  51. package/dist/types/data-structures/binary-tree/bst.d.ts +124 -1063
  52. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +99 -854
  53. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +62 -314
  54. package/dist/types/data-structures/binary-tree/tree-map.d.ts +366 -5057
  55. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +277 -4885
  56. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +253 -3929
  57. package/dist/types/data-structures/binary-tree/tree-set.d.ts +261 -4782
  58. package/dist/types/data-structures/graph/abstract-graph.d.ts +44 -44
  59. package/dist/types/data-structures/graph/directed-graph.d.ts +130 -527
  60. package/dist/types/data-structures/graph/undirected-graph.d.ts +125 -482
  61. package/dist/types/data-structures/hash/hash-map.d.ts +132 -562
  62. package/dist/types/data-structures/heap/heap.d.ts +194 -746
  63. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +120 -809
  64. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +121 -733
  65. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +193 -863
  66. package/dist/types/data-structures/matrix/matrix.d.ts +159 -474
  67. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +1 -6
  68. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +6 -11
  69. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  70. package/dist/types/data-structures/queue/deque.d.ts +196 -804
  71. package/dist/types/data-structures/queue/queue.d.ts +99 -585
  72. package/dist/types/data-structures/stack/stack.d.ts +75 -481
  73. package/dist/types/data-structures/trie/trie.d.ts +98 -584
  74. package/dist/umd/data-structure-typed.js +6580 -32822
  75. package/dist/umd/data-structure-typed.min.js +3 -3
  76. package/docs-site-docusaurus/docs/api/classes/AVLTree.md +162 -215
  77. package/docs-site-docusaurus/docs/api/classes/AVLTreeNode.md +9 -9
  78. package/docs-site-docusaurus/docs/api/classes/AbstractGraph.md +47 -47
  79. package/docs-site-docusaurus/docs/api/classes/BST.md +155 -208
  80. package/docs-site-docusaurus/docs/api/classes/BSTNode.md +7 -7
  81. package/docs-site-docusaurus/docs/api/classes/BinaryIndexedTree.md +13 -29
  82. package/docs-site-docusaurus/docs/api/classes/BinaryTree.md +104 -158
  83. package/docs-site-docusaurus/docs/api/classes/BinaryTreeNode.md +13 -13
  84. package/docs-site-docusaurus/docs/api/classes/Deque.md +253 -101
  85. package/docs-site-docusaurus/docs/api/classes/DirectedGraph.md +60 -80
  86. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedList.md +244 -114
  87. package/docs-site-docusaurus/docs/api/classes/DoublyLinkedListNode.md +6 -6
  88. package/docs-site-docusaurus/docs/api/classes/FibonacciHeap.md +9 -9
  89. package/docs-site-docusaurus/docs/api/classes/FibonacciHeapNode.md +1 -1
  90. package/docs-site-docusaurus/docs/api/classes/HashMap.md +52 -48
  91. package/docs-site-docusaurus/docs/api/classes/Heap.md +119 -64
  92. package/docs-site-docusaurus/docs/api/classes/IterableElementBase.md +84 -14
  93. package/docs-site-docusaurus/docs/api/classes/LinearBase.md +138 -34
  94. package/docs-site-docusaurus/docs/api/classes/LinearLinkedBase.md +149 -41
  95. package/docs-site-docusaurus/docs/api/classes/LinkedHashMap.md +23 -23
  96. package/docs-site-docusaurus/docs/api/classes/LinkedListQueue.md +172 -92
  97. package/docs-site-docusaurus/docs/api/classes/MapGraph.md +60 -80
  98. package/docs-site-docusaurus/docs/api/classes/Matrix.md +57 -52
  99. package/docs-site-docusaurus/docs/api/classes/MaxHeap.md +117 -62
  100. package/docs-site-docusaurus/docs/api/classes/MaxPriorityQueue.md +120 -70
  101. package/docs-site-docusaurus/docs/api/classes/MinHeap.md +117 -62
  102. package/docs-site-docusaurus/docs/api/classes/MinPriorityQueue.md +125 -75
  103. package/docs-site-docusaurus/docs/api/classes/PriorityQueue.md +119 -64
  104. package/docs-site-docusaurus/docs/api/classes/Queue.md +158 -74
  105. package/docs-site-docusaurus/docs/api/classes/RedBlackTree.md +171 -225
  106. package/docs-site-docusaurus/docs/api/classes/SegmentTree.md +10 -22
  107. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedList.md +172 -94
  108. package/docs-site-docusaurus/docs/api/classes/SinglyLinkedListNode.md +4 -4
  109. package/docs-site-docusaurus/docs/api/classes/SkipList.md +98 -75
  110. package/docs-site-docusaurus/docs/api/classes/Stack.md +112 -50
  111. package/docs-site-docusaurus/docs/api/classes/TreeMap.md +104 -129
  112. package/docs-site-docusaurus/docs/api/classes/TreeMultiMap.md +90 -121
  113. package/docs-site-docusaurus/docs/api/classes/TreeSet.md +298 -107
  114. package/docs-site-docusaurus/docs/api/classes/Trie.md +116 -58
  115. package/docs-site-docusaurus/docs/api/classes/TrieNode.md +8 -8
  116. package/docs-site-docusaurus/docs/api/classes/UndirectedGraph.md +59 -77
  117. package/package.json +45 -46
  118. package/src/common/error.ts +15 -32
  119. package/src/common/index.ts +0 -3
  120. package/src/data-structures/base/iterable-element-base.ts +0 -3
  121. package/src/data-structures/base/linear-base.ts +2 -36
  122. package/src/data-structures/binary-tree/avl-tree.ts +31 -529
  123. package/src/data-structures/binary-tree/binary-indexed-tree.ts +47 -572
  124. package/src/data-structures/binary-tree/binary-tree.ts +326 -1311
  125. package/src/data-structures/binary-tree/bst.ts +158 -1082
  126. package/src/data-structures/binary-tree/red-black-tree.ts +451 -1290
  127. package/src/data-structures/binary-tree/segment-tree.ts +73 -351
  128. package/src/data-structures/binary-tree/tree-map.ts +462 -5124
  129. package/src/data-structures/binary-tree/tree-multi-map.ts +302 -4914
  130. package/src/data-structures/binary-tree/tree-multi-set.ts +299 -3983
  131. package/src/data-structures/binary-tree/tree-set.ts +338 -4836
  132. package/src/data-structures/graph/abstract-graph.ts +98 -167
  133. package/src/data-structures/graph/directed-graph.ts +137 -562
  134. package/src/data-structures/graph/map-graph.ts +0 -3
  135. package/src/data-structures/graph/undirected-graph.ts +132 -511
  136. package/src/data-structures/hash/hash-map.ts +154 -582
  137. package/src/data-structures/heap/heap.ts +200 -795
  138. package/src/data-structures/linked-list/doubly-linked-list.ts +121 -865
  139. package/src/data-structures/linked-list/singly-linked-list.ts +122 -794
  140. package/src/data-structures/linked-list/skip-linked-list.ts +211 -918
  141. package/src/data-structures/matrix/matrix.ts +179 -518
  142. package/src/data-structures/matrix/navigator.ts +0 -1
  143. package/src/data-structures/priority-queue/max-priority-queue.ts +1 -6
  144. package/src/data-structures/priority-queue/min-priority-queue.ts +6 -11
  145. package/src/data-structures/priority-queue/priority-queue.ts +1 -2
  146. package/src/data-structures/queue/deque.ts +214 -882
  147. package/src/data-structures/queue/queue.ts +102 -625
  148. package/src/data-structures/stack/stack.ts +76 -505
  149. package/src/data-structures/trie/trie.ts +98 -628
  150. package/src/types/common.ts +0 -10
  151. package/src/types/data-structures/binary-tree/bst.ts +0 -7
  152. package/src/types/data-structures/binary-tree/red-black-tree.ts +0 -1
  153. package/src/types/data-structures/graph/abstract-graph.ts +0 -2
  154. package/src/types/data-structures/hash/hash-map.ts +0 -3
  155. package/src/types/data-structures/hash/index.ts +0 -1
  156. package/src/types/data-structures/matrix/navigator.ts +0 -2
  157. package/src/types/utils/utils.ts +0 -7
  158. package/src/types/utils/validate-type.ts +0 -7
  159. package/src/utils/number.ts +0 -2
  160. package/src/utils/utils.ts +0 -5
@@ -113,138 +113,96 @@ var _Matrix = class _Matrix {
113
113
  return this._multiplyFn;
114
114
  }
115
115
  /**
116
- * The `get` function returns the value at the specified row and column index if it is a valid index.
117
- * @param {number} row - The `row` parameter represents the row index of the element you want to
118
- * retrieve from the data array.
119
- * @param {number} col - The parameter "col" represents the column number of the element you want to
120
- * retrieve from the data array.
121
- * @returns The `get` function returns a number if the provided row and column indices are valid.
122
- * Otherwise, it returns `undefined`.
123
-
124
-
125
-
126
-
127
-
128
-
129
-
130
-
131
-
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
-
142
-
143
-
144
-
145
-
146
-
147
-
148
-
149
-
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
-
158
-
159
-
160
-
161
-
162
-
163
-
164
-
165
- * @example
166
- * // Get and set individual cells
167
- * const m = new Matrix([
168
- * [0, 0, 0],
169
- * [0, 0, 0]
170
- * ]);
171
- *
172
- * m.set(0, 1, 42);
173
- * m.set(1, 2, 99);
174
- *
175
- * console.log(m.get(0, 1)); // 42;
176
- * console.log(m.get(1, 2)); // 99;
177
- * console.log(m.get(0, 0)); // 0;
178
- *
179
- * // Out of bounds returns undefined
180
- * console.log(m.get(5, 5)); // undefined;
181
- */
116
+ * Returns [rows, cols] dimensions tuple.
117
+ */
118
+ get size() {
119
+ return [this._rows, this._cols];
120
+ }
121
+ /**
122
+ * Creates a rows×cols zero matrix.
123
+ * @example
124
+ * ```ts
125
+ * const z = Matrix.zeros(2, 3); // [[0,0,0],[0,0,0]]
126
+ * ```
127
+ */
128
+ static zeros(rows, cols) {
129
+ const data = Array.from({ length: rows }, () => new Array(cols).fill(0));
130
+ return new _Matrix(data);
131
+ }
132
+ /**
133
+ * Creates an n×n identity matrix.
134
+ * @example
135
+ * ```ts
136
+ * const I = Matrix.identity(3); // [[1,0,0],[0,1,0],[0,0,1]]
137
+ * ```
138
+ */
139
+ static identity(n) {
140
+ const data = Array.from(
141
+ { length: n },
142
+ (_, i) => Array.from({ length: n }, (_2, j) => i === j ? 1 : 0)
143
+ );
144
+ return new _Matrix(data);
145
+ }
146
+ /**
147
+ * Creates a Matrix from a plain 2D array (deep copy).
148
+ * @example
149
+ * ```ts
150
+ * const m = Matrix.from([[1, 2], [3, 4]]);
151
+ * m.get(0, 1); // 2
152
+ * ```
153
+ */
154
+ static from(data) {
155
+ return new _Matrix(data.map((row) => [...row]));
156
+ }
157
+ /**
158
+ * The `get` function returns the value at the specified row and column index if it is a valid index.
159
+ * @param {number} row - The `row` parameter represents the row index of the element you want to
160
+ * retrieve from the data array.
161
+ * @param {number} col - The parameter "col" represents the column number of the element you want to
162
+ * retrieve from the data array.
163
+ * @returns The `get` function returns a number if the provided row and column indices are valid.
164
+ * Otherwise, it returns `undefined`.
165
+ * @example
166
+ * // Get and set individual cells
167
+ * const m = new Matrix([
168
+ * [0, 0, 0],
169
+ * [0, 0, 0]
170
+ * ]);
171
+ *
172
+ * m.set(0, 1, 42);
173
+ * m.set(1, 2, 99);
174
+ *
175
+ * console.log(m.get(0, 1)); // 42;
176
+ * console.log(m.get(1, 2)); // 99;
177
+ * console.log(m.get(0, 0)); // 0;
178
+ *
179
+ * // Out of bounds returns undefined
180
+ * console.log(m.get(5, 5)); // undefined;
181
+ */
182
182
  get(row, col) {
183
183
  if (this.isValidIndex(row, col)) {
184
184
  return this.data[row][col];
185
185
  }
186
186
  }
187
187
  /**
188
- * The set function updates the value at a specified row and column in a two-dimensional array.
189
- * @param {number} row - The "row" parameter represents the row index of the element in a
190
- * two-dimensional array or matrix. It specifies the row where the value will be set.
191
- * @param {number} col - The "col" parameter represents the column index of the element in a
192
- * two-dimensional array.
193
- * @param {number} value - The value parameter represents the number that you want to set at the
194
- * specified row and column in the data array.
195
- * @returns a boolean value. It returns true if the index (row, col) is valid and the value is
196
- * successfully set in the data array. It returns false if the index is invalid and the value is not
197
- * set.
198
-
199
-
200
-
201
-
202
-
203
-
204
-
205
-
206
-
207
-
208
-
209
-
210
-
211
-
212
-
213
-
214
-
215
-
216
-
217
-
218
-
219
-
220
-
221
-
222
-
223
-
224
-
225
-
226
-
227
-
228
-
229
-
230
-
231
-
232
-
233
-
234
-
235
-
236
-
237
-
238
-
239
-
240
- * @example
241
- * // Modify individual cells
242
- * const m = Matrix.zeros(2, 2);
243
- * console.log(m.set(0, 0, 5)); // true;
244
- * console.log(m.set(1, 1, 10)); // true;
245
- * console.log(m.get(0, 0)); // 5;
246
- * console.log(m.get(1, 1)); // 10;
247
- */
188
+ * The set function updates the value at a specified row and column in a two-dimensional array.
189
+ * @param {number} row - The "row" parameter represents the row index of the element in a
190
+ * two-dimensional array or matrix. It specifies the row where the value will be set.
191
+ * @param {number} col - The "col" parameter represents the column index of the element in a
192
+ * two-dimensional array.
193
+ * @param {number} value - The value parameter represents the number that you want to set at the
194
+ * specified row and column in the data array.
195
+ * @returns a boolean value. It returns true if the index (row, col) is valid and the value is
196
+ * successfully set in the data array. It returns false if the index is invalid and the value is not
197
+ * set.
198
+ * @example
199
+ * // Modify individual cells
200
+ * const m = Matrix.zeros(2, 2);
201
+ * console.log(m.set(0, 0, 5)); // true;
202
+ * console.log(m.set(1, 1, 10)); // true;
203
+ * console.log(m.get(0, 0)); // 5;
204
+ * console.log(m.get(1, 1)); // 10;
205
+ */
248
206
  set(row, col, value) {
249
207
  if (this.isValidIndex(row, col)) {
250
208
  this.data[row][col] = value;
@@ -262,75 +220,33 @@ var _Matrix = class _Matrix {
262
220
  return this.rows === matrix.rows && this.cols === matrix.cols;
263
221
  }
264
222
  /**
265
- * The `add` function adds two matrices together, returning a new matrix with the result.
266
- * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class.
267
- * @returns The `add` method returns a new `Matrix` object that represents the result of adding the
268
- * current matrix with the provided `matrix` parameter.
269
-
270
-
271
-
272
-
273
-
274
-
275
-
276
-
277
-
278
-
279
-
280
-
281
-
282
-
283
-
284
-
285
-
286
-
287
-
288
-
289
-
290
-
291
-
292
-
293
-
294
-
295
-
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
-
306
-
307
-
308
-
309
-
310
-
311
- * @example
312
- * // Basic matrix arithmetic
313
- * const a = new Matrix([
314
- * [1, 2],
315
- * [3, 4]
316
- * ]);
317
- * const b = new Matrix([
318
- * [5, 6],
319
- * [7, 8]
320
- * ]);
321
- *
322
- * const sum = a.add(b);
323
- * console.log(sum?.data); // [
324
- * // [6, 8],
325
- * // [10, 12]
326
- * // ];
327
- *
328
- * const diff = b.subtract(a);
329
- * console.log(diff?.data); // [
330
- * // [4, 4],
331
- * // [4, 4]
332
- * // ];
333
- */
223
+ * The `add` function adds two matrices together, returning a new matrix with the result.
224
+ * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class.
225
+ * @returns The `add` method returns a new `Matrix` object that represents the result of adding the
226
+ * current matrix with the provided `matrix` parameter.
227
+ * @example
228
+ * // Basic matrix arithmetic
229
+ * const a = new Matrix([
230
+ * [1, 2],
231
+ * [3, 4]
232
+ * ]);
233
+ * const b = new Matrix([
234
+ * [5, 6],
235
+ * [7, 8]
236
+ * ]);
237
+ *
238
+ * const sum = a.add(b);
239
+ * console.log(sum?.data); // [
240
+ * // [6, 8],
241
+ * // [10, 12]
242
+ * // ];
243
+ *
244
+ * const diff = b.subtract(a);
245
+ * console.log(diff?.data); // [
246
+ * // [4, 4],
247
+ * // [4, 4]
248
+ * // ];
249
+ */
334
250
  add(matrix) {
335
251
  var _a;
336
252
  if (!this.isMatchForCalculate(matrix)) {
@@ -355,60 +271,27 @@ var _Matrix = class _Matrix {
355
271
  });
356
272
  }
357
273
  /**
358
- * The `subtract` function performs element-wise subtraction between two matrices and returns a new
359
- * matrix with the result.
360
- * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class. It
361
- * represents the matrix that you want to subtract from the current matrix.
362
- * @returns a new Matrix object with the result of the subtraction operation.
363
-
364
-
365
-
366
-
367
-
368
-
369
-
370
-
371
-
372
-
373
-
374
-
375
-
376
-
377
-
378
-
379
-
380
-
381
-
382
-
383
-
384
-
385
-
386
-
387
-
388
-
389
-
390
-
391
-
392
-
393
-
394
-
395
-
396
-
397
-
398
-
399
-
400
-
401
-
402
-
403
-
404
-
405
- * @example
406
- * // Element-wise subtraction
407
- * const a = Matrix.from([[5, 6], [7, 8]]);
408
- * const b = Matrix.from([[1, 2], [3, 4]]);
409
- * const result = a.subtract(b);
410
- * console.log(result?.toArray()); // [[4, 4], [4, 4]];
411
- */
274
+ * The `subtract` function performs element-wise subtraction between two matrices and returns a new
275
+ * matrix with the result.
276
+ * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class. It
277
+ * represents the matrix that you want to subtract from the current matrix.
278
+ * @returns a new Matrix object with the result of the subtraction operation.
279
+ * @example
280
+ * // Element-wise subtraction
281
+ * const a = Matrix.from([
282
+ * [5, 6],
283
+ * [7, 8]
284
+ * ]);
285
+ * const b = Matrix.from([
286
+ * [1, 2],
287
+ * [3, 4]
288
+ * ]);
289
+ * const result = a.subtract(b);
290
+ * console.log(result?.toArray()); // [
291
+ * // [4, 4],
292
+ * // [4, 4]
293
+ * // ];
294
+ */
412
295
  subtract(matrix) {
413
296
  var _a;
414
297
  if (!this.isMatchForCalculate(matrix)) {
@@ -433,75 +316,33 @@ var _Matrix = class _Matrix {
433
316
  });
434
317
  }
435
318
  /**
436
- * The `multiply` function performs matrix multiplication between two matrices and returns the result
437
- * as a new matrix.
438
- * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class.
439
- * @returns a new Matrix object.
440
-
441
-
442
-
443
-
444
-
445
-
446
-
447
-
448
-
449
-
450
-
451
-
452
-
453
-
454
-
455
-
456
-
457
-
458
-
459
-
460
-
461
-
462
-
463
-
464
-
465
-
466
-
467
-
468
-
469
-
470
-
471
-
472
-
473
-
474
-
475
-
476
-
477
-
478
-
479
-
480
-
481
-
482
- * @example
483
- * // Matrix multiplication for transformations
484
- * // 2x3 matrix * 3x2 matrix = 2x2 matrix
485
- * const a = new Matrix([
486
- * [1, 2, 3],
487
- * [4, 5, 6]
488
- * ]);
489
- * const b = new Matrix([
490
- * [7, 8],
491
- * [9, 10],
492
- * [11, 12]
493
- * ]);
494
- *
495
- * const product = a.multiply(b);
496
- * console.log(product?.rows); // 2;
497
- * console.log(product?.cols); // 2;
498
- * // Row 0: 1*7+2*9+3*11=58, 1*8+2*10+3*12=64
499
- * // Row 1: 4*7+5*9+6*11=139, 4*8+5*10+6*12=154
500
- * console.log(product?.data); // [
501
- * // [58, 64],
502
- * // [139, 154]
503
- * // ];
504
- */
319
+ * The `multiply` function performs matrix multiplication between two matrices and returns the result
320
+ * as a new matrix.
321
+ * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class.
322
+ * @returns a new Matrix object.
323
+ * @example
324
+ * // Matrix multiplication for transformations
325
+ * // 2x3 matrix * 3x2 matrix = 2x2 matrix
326
+ * const a = new Matrix([
327
+ * [1, 2, 3],
328
+ * [4, 5, 6]
329
+ * ]);
330
+ * const b = new Matrix([
331
+ * [7, 8],
332
+ * [9, 10],
333
+ * [11, 12]
334
+ * ]);
335
+ *
336
+ * const product = a.multiply(b);
337
+ * console.log(product?.rows); // 2;
338
+ * console.log(product?.cols); // 2;
339
+ * // Row 0: 1*7+2*9+3*11=58, 1*8+2*10+3*12=64
340
+ * // Row 1: 4*7+5*9+6*11=139, 4*8+5*10+6*12=154
341
+ * console.log(product?.data); // [
342
+ * // [58, 64],
343
+ * // [139, 154]
344
+ * // ];
345
+ */
505
346
  multiply(matrix) {
506
347
  if (this.cols !== matrix.rows) {
507
348
  raise(Error, ERR.matrixDimensionMismatch("multiplication (A.cols must equal B.rows)"));
@@ -532,71 +373,29 @@ var _Matrix = class _Matrix {
532
373
  });
533
374
  }
534
375
  /**
535
- * The transpose function takes a matrix and returns a new matrix that is the transpose of the
536
- * original matrix.
537
- * @returns The transpose() function returns a new Matrix object with the transposed data.
538
-
539
-
540
-
541
-
542
-
543
-
544
-
545
-
546
-
547
-
548
-
549
-
550
-
551
-
552
-
553
-
554
-
555
-
556
-
557
-
558
-
559
-
560
-
561
-
562
-
563
-
564
-
565
-
566
-
567
-
568
-
569
-
570
-
571
-
572
-
573
-
574
-
575
-
576
-
577
-
578
-
579
-
580
- * @example
581
- * // Matrix transpose (square matrix)
582
- * const m = new Matrix([
583
- * [1, 2, 3],
584
- * [4, 5, 6],
585
- * [7, 8, 9]
586
- * ]);
587
- *
588
- * const transposed = m.transpose();
589
- * console.log(transposed.rows); // 3;
590
- * console.log(transposed.cols); // 3;
591
- * console.log(transposed.data); // [
592
- * // [1, 4, 7],
593
- * // [2, 5, 8],
594
- * // [3, 6, 9]
595
- * // ];
596
- *
597
- * // Transpose of transpose = original
598
- * console.log(transposed.transpose().data); // m.data;
599
- */
376
+ * The transpose function takes a matrix and returns a new matrix that is the transpose of the
377
+ * original matrix.
378
+ * @returns The transpose() function returns a new Matrix object with the transposed data.
379
+ * @example
380
+ * // Matrix transpose (square matrix)
381
+ * const m = new Matrix([
382
+ * [1, 2, 3],
383
+ * [4, 5, 6],
384
+ * [7, 8, 9]
385
+ * ]);
386
+ *
387
+ * const transposed = m.transpose();
388
+ * console.log(transposed.rows); // 3;
389
+ * console.log(transposed.cols); // 3;
390
+ * console.log(transposed.data); // [
391
+ * // [1, 4, 7],
392
+ * // [2, 5, 8],
393
+ * // [3, 6, 9]
394
+ * // ];
395
+ *
396
+ * // Transpose of transpose = original
397
+ * console.log(transposed.transpose().data); // m.data;
398
+ */
600
399
  transpose() {
601
400
  if (this.data.some((row) => row.length !== this.cols)) {
602
401
  raise(Error, ERR.matrixNotRectangular());
@@ -617,63 +416,25 @@ var _Matrix = class _Matrix {
617
416
  multiplyFn: this.multiplyFn
618
417
  });
619
418
  }
419
+ // ─── Standard interface ─────────────────────────────────────
620
420
  /**
621
- * The `inverse` function calculates the inverse of a square matrix using Gaussian elimination.
622
- * @returns a Matrix object, which represents the inverse of the original matrix.
623
-
624
-
625
-
626
-
627
-
628
-
629
-
630
-
631
-
632
-
633
-
634
-
635
-
636
-
637
-
638
-
639
-
640
-
641
-
642
-
643
-
644
-
645
-
646
-
647
-
648
-
649
-
650
-
651
-
652
-
653
-
654
-
655
-
656
-
657
-
658
-
659
-
660
-
661
-
662
-
663
-
664
-
665
- * @example
666
- * // Compute the inverse of a 2x2 matrix
667
- * const m = Matrix.from([[4, 7], [2, 6]]);
668
- * const inv = m.inverse();
669
- * console.log(inv); // defined;
670
- * // A * A^-1 should ≈ Identity
671
- * const product = m.multiply(inv!);
672
- * console.log(product?.get(0, 0)); // toBeCloseTo;
673
- * console.log(product?.get(0, 1)); // toBeCloseTo;
674
- * console.log(product?.get(1, 0)); // toBeCloseTo;
675
- * console.log(product?.get(1, 1)); // toBeCloseTo;
676
- */
421
+ * The `inverse` function calculates the inverse of a square matrix using Gaussian elimination.
422
+ * @returns a Matrix object, which represents the inverse of the original matrix.
423
+ * @example
424
+ * // Compute the inverse of a 2x2 matrix
425
+ * const m = Matrix.from([
426
+ * [4, 7],
427
+ * [2, 6]
428
+ * ]);
429
+ * const inv = m.inverse();
430
+ * console.log(inv); // defined;
431
+ * // A * A^-1 should ≈ Identity
432
+ * const product = m.multiply(inv!);
433
+ * console.log(product?.get(0, 0)); // toBeCloseTo;
434
+ * console.log(product?.get(0, 1)); // toBeCloseTo;
435
+ * console.log(product?.get(1, 0)); // toBeCloseTo;
436
+ * console.log(product?.get(1, 1)); // toBeCloseTo;
437
+ */
677
438
  inverse() {
678
439
  var _a;
679
440
  if (this.rows !== this.cols) {
@@ -728,58 +489,25 @@ var _Matrix = class _Matrix {
728
489
  });
729
490
  }
730
491
  /**
731
- * The dot function calculates the dot product of two matrices and returns a new matrix.
732
- * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class.
733
- * @returns a new Matrix object.
734
-
735
-
736
-
737
-
738
-
739
-
740
-
741
-
742
-
743
-
744
-
745
-
746
-
747
-
748
-
749
-
750
-
751
-
752
-
753
-
754
-
755
-
756
-
757
-
758
-
759
-
760
-
761
-
762
-
763
-
764
-
765
-
766
-
767
-
768
-
769
-
770
-
771
-
772
-
773
-
774
-
775
-
776
- * @example
777
- * // Dot product of two matrices
778
- * const a = Matrix.from([[1, 2], [3, 4]]);
779
- * const b = Matrix.from([[5, 6], [7, 8]]);
780
- * const result = a.dot(b);
781
- * console.log(result?.toArray()); // [[19, 22], [43, 50]];
782
- */
492
+ * The dot function calculates the dot product of two matrices and returns a new matrix.
493
+ * @param {Matrix} matrix - The `matrix` parameter is an instance of the `Matrix` class.
494
+ * @returns a new Matrix object.
495
+ * @example
496
+ * // Dot product of two matrices
497
+ * const a = Matrix.from([
498
+ * [1, 2],
499
+ * [3, 4]
500
+ * ]);
501
+ * const b = Matrix.from([
502
+ * [5, 6],
503
+ * [7, 8]
504
+ * ]);
505
+ * const result = a.dot(b);
506
+ * console.log(result?.toArray()); // [
507
+ * // [19, 22],
508
+ * // [43, 50]
509
+ * // ];
510
+ */
783
511
  dot(matrix) {
784
512
  if (this.cols !== matrix.rows) {
785
513
  raise(Error, ERR.matrixDimensionMismatch("dot product (A.cols must equal B.rows)"));
@@ -838,13 +566,6 @@ var _Matrix = class _Matrix {
838
566
  }
839
567
  );
840
568
  }
841
- // ─── Standard interface ─────────────────────────────────────
842
- /**
843
- * Returns [rows, cols] dimensions tuple.
844
- */
845
- get size() {
846
- return [this._rows, this._cols];
847
- }
848
569
  isEmpty() {
849
570
  return this._rows === 0 || this._cols === 0;
850
571
  }
@@ -882,6 +603,7 @@ var _Matrix = class _Matrix {
882
603
  }
883
604
  };
884
605
  }
606
+ // ─── Factory methods ────────────────────────────────────────
885
607
  /**
886
608
  * Visits each element with its row and column index.
887
609
  */
@@ -916,43 +638,6 @@ var _Matrix = class _Matrix {
916
638
  console.log(row.join(" "));
917
639
  }
918
640
  }
919
- // ─── Factory methods ────────────────────────────────────────
920
- /**
921
- * Creates a rows×cols zero matrix.
922
- * @example
923
- * ```ts
924
- * const z = Matrix.zeros(2, 3); // [[0,0,0],[0,0,0]]
925
- * ```
926
- */
927
- static zeros(rows, cols) {
928
- const data = Array.from({ length: rows }, () => new Array(cols).fill(0));
929
- return new _Matrix(data);
930
- }
931
- /**
932
- * Creates an n×n identity matrix.
933
- * @example
934
- * ```ts
935
- * const I = Matrix.identity(3); // [[1,0,0],[0,1,0],[0,0,1]]
936
- * ```
937
- */
938
- static identity(n) {
939
- const data = Array.from(
940
- { length: n },
941
- (_, i) => Array.from({ length: n }, (_2, j) => i === j ? 1 : 0)
942
- );
943
- return new _Matrix(data);
944
- }
945
- /**
946
- * Creates a Matrix from a plain 2D array (deep copy).
947
- * @example
948
- * ```ts
949
- * const m = Matrix.from([[1, 2], [3, 4]]);
950
- * m.get(0, 1); // 2
951
- * ```
952
- */
953
- static from(data) {
954
- return new _Matrix(data.map((row) => [...row]));
955
- }
956
641
  _addFn(a, b) {
957
642
  if (a === void 0) return b;
958
643
  return a + b;