typescript-ds-lib 0.3.0 → 0.3.5

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 (54) hide show
  1. package/README.md +9 -7
  2. package/dist/index.d.ts +1 -0
  3. package/dist/index.js +3 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/base-collection.d.ts +14 -0
  6. package/dist/lib/base-collection.js +7 -0
  7. package/dist/lib/base-collection.js.map +1 -0
  8. package/dist/lib/binary-search-tree.d.ts +14 -3
  9. package/dist/lib/binary-search-tree.js +11 -2
  10. package/dist/lib/binary-search-tree.js.map +1 -1
  11. package/dist/lib/deque.d.ts +14 -4
  12. package/dist/lib/deque.js +3 -1
  13. package/dist/lib/deque.js.map +1 -1
  14. package/dist/lib/hash-table-utils.js.map +1 -1
  15. package/dist/lib/hash-table.d.ts +6 -4
  16. package/dist/lib/hash-table.js +13 -2
  17. package/dist/lib/hash-table.js.map +1 -1
  18. package/dist/lib/heap.d.ts +32 -0
  19. package/dist/lib/heap.js +101 -0
  20. package/dist/lib/heap.js.map +1 -0
  21. package/dist/lib/linked-list.d.ts +14 -4
  22. package/dist/lib/linked-list.js +5 -3
  23. package/dist/lib/linked-list.js.map +1 -1
  24. package/dist/lib/map.d.ts +5 -4
  25. package/dist/lib/map.js +3 -1
  26. package/dist/lib/map.js.map +1 -1
  27. package/dist/lib/matrix.d.ts +14 -4
  28. package/dist/lib/matrix.js +3 -1
  29. package/dist/lib/matrix.js.map +1 -1
  30. package/dist/lib/priority-queue.d.ts +15 -4
  31. package/dist/lib/priority-queue.js +14 -20
  32. package/dist/lib/priority-queue.js.map +1 -1
  33. package/dist/lib/queue.d.ts +14 -4
  34. package/dist/lib/queue.js +3 -1
  35. package/dist/lib/queue.js.map +1 -1
  36. package/dist/lib/red-black-tree.d.ts +5 -4
  37. package/dist/lib/red-black-tree.js +5 -3
  38. package/dist/lib/red-black-tree.js.map +1 -1
  39. package/dist/lib/set.d.ts +14 -4
  40. package/dist/lib/set.js +3 -1
  41. package/dist/lib/set.js.map +1 -1
  42. package/dist/lib/stack.d.ts +14 -4
  43. package/dist/lib/stack.js +12 -9
  44. package/dist/lib/stack.js.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/benchmarks/benchmark.d.ts +0 -5
  47. package/dist/benchmarks/benchmark.js +0 -23
  48. package/dist/benchmarks/benchmark.js.map +0 -1
  49. package/dist/benchmarks/hash-table.d.ts +0 -8
  50. package/dist/benchmarks/hash-table.js +0 -121
  51. package/dist/benchmarks/hash-table.js.map +0 -1
  52. package/dist/benchmarks/run.d.ts +0 -1
  53. package/dist/benchmarks/run.js +0 -12
  54. package/dist/benchmarks/run.js.map +0 -1
@@ -1,121 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const benchmark_1 = __importDefault(require("./benchmark"));
7
- const hash_table_1 = require("../lib/hash-table");
8
- class HashTableBenchmark extends benchmark_1.default {
9
- iterations;
10
- constructor(iterations = 100000) {
11
- super();
12
- this.iterations = iterations;
13
- }
14
- generateTestData() {
15
- return Array.from({ length: this.iterations }, (_, i) => [`key${i}`, `value${i}`]);
16
- }
17
- run() {
18
- const testData = this.generateTestData();
19
- // Test insertion
20
- const map = new Map();
21
- const hashTable = new hash_table_1.HashTable(8192 * 100);
22
- const mapInsertTime = this.measure(() => {
23
- for (const [key, value] of testData) {
24
- map.set(key, value);
25
- }
26
- });
27
- const hashTableInsertTime = this.measure(() => {
28
- for (const [key, value] of testData) {
29
- hashTable.insert(key, value);
30
- }
31
- });
32
- // Test lookup
33
- const mapLookupTime = this.measure(() => {
34
- for (const [key] of testData) {
35
- map.get(key);
36
- }
37
- });
38
- const hashTableLookupTime = this.measure(() => {
39
- for (const [key] of testData) {
40
- hashTable.get(key);
41
- }
42
- });
43
- // Test deletion
44
- const mapDeleteTime = this.measure(() => {
45
- for (const [key] of testData) {
46
- map.delete(key);
47
- }
48
- });
49
- const hashTableDeleteTime = this.measure(() => {
50
- for (const [key] of testData) {
51
- hashTable.remove(key);
52
- }
53
- });
54
- // Print results
55
- console.log(`\nBenchmark Results (${this.iterations.toLocaleString()} operations):`);
56
- this.formatResult('Insertion', mapInsertTime, hashTableInsertTime, 'Map', 'HashTable');
57
- // this.formatResult('Lookup', mapLookupTime, hashTableLookupTime, 'Map', 'HashTable');
58
- // this.formatResult('Deletion', mapDeleteTime, hashTableDeleteTime, 'Map', 'HashTable');
59
- }
60
- benchmarkCustomHashCode() {
61
- // Create test data with custom hash code implementation
62
- class CustomKey {
63
- value;
64
- constructor(value) {
65
- this.value = value;
66
- }
67
- hashCode() {
68
- return this.value % 8192;
69
- }
70
- equals(other) {
71
- return this.value === other.value;
72
- }
73
- }
74
- const testData = [];
75
- for (let i = 0; i < this.iterations; i++) {
76
- testData.push([new CustomKey(i), i]);
77
- }
78
- // Test insertion
79
- const map = new Map();
80
- const hashTable = new hash_table_1.HashTable(8192 * 100);
81
- const mapInsertTime = this.measure(() => {
82
- for (const [key, value] of testData) {
83
- map.set(key, value);
84
- }
85
- });
86
- const hashTableInsertTime = this.measure(() => {
87
- for (const [key, value] of testData) {
88
- hashTable.insert(key, value);
89
- }
90
- });
91
- // Test lookup
92
- const mapLookupTime = this.measure(() => {
93
- for (const [key] of testData) {
94
- map.get(key);
95
- }
96
- });
97
- const hashTableLookupTime = this.measure(() => {
98
- for (const [key] of testData) {
99
- hashTable.get(key);
100
- }
101
- });
102
- // Test deletion
103
- const mapDeleteTime = this.measure(() => {
104
- for (const [key] of testData) {
105
- map.delete(key);
106
- }
107
- });
108
- const hashTableDeleteTime = this.measure(() => {
109
- for (const [key] of testData) {
110
- hashTable.remove(key);
111
- }
112
- });
113
- // Print results
114
- console.log(`\nBenchmark Results with Custom HashCode (${this.iterations.toLocaleString()} operations):`);
115
- this.formatResult('Insertion', mapInsertTime, hashTableInsertTime, 'Map', 'HashTable');
116
- this.formatResult('Lookup', mapLookupTime, hashTableLookupTime, 'Map', 'HashTable');
117
- this.formatResult('Deletion', mapDeleteTime, hashTableDeleteTime, 'Map', 'HashTable');
118
- }
119
- }
120
- exports.default = HashTableBenchmark;
121
- //# sourceMappingURL=hash-table.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hash-table.js","sourceRoot":"","sources":["../../benchmarks/hash-table.ts"],"names":[],"mappings":";;;;;AAAA,4DAAwC;AACxC,kDAA8C;AAG9C,MAAqB,kBAAmB,SAAQ,mBAAa;IACjD,UAAU,CAAS;IAE7B,YAAY,aAAqB,MAAM;QACrC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAES,gBAAgB;QACxB,OAAO,KAAK,CAAC,IAAI,CACf,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,EAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CACnC,CAAC;IACJ,CAAC;IAED,GAAG;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAEzC,iBAAiB;QACjB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,sBAAS,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;QAE5C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACpC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACpC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,cAAc;QACd,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACtC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5C,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC7B,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACtC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5C,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC7B,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QACrF,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACvF,uFAAuF;QACvF,yFAAyF;IAC3F,CAAC;IAED,uBAAuB;QACrB,wDAAwD;QACxD,MAAM,SAAS;YACO;YAApB,YAAoB,KAAa;gBAAb,UAAK,GAAL,KAAK,CAAQ;YAAG,CAAC;YAErC,QAAQ;gBACN,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAC3B,CAAC;YAED,MAAM,CAAC,KAAgB;gBACrB,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;YACpC,CAAC;SACF;QAED,MAAM,QAAQ,GAA+B,EAAE,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;QAED,iBAAiB;QACjB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,sBAAS,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;QAE5C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACpC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACpC,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,cAAc;QACd,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACtC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC7B,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5C,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC7B,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YACtC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC7B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;YAC5C,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;gBAC7B,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,6CAA6C,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACvF,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACpF,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IACxF,CAAC;CACF;AAtID,qCAsIC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,12 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const hash_table_1 = __importDefault(require("./hash-table"));
7
- // Run benchmark
8
- console.log('Starting benchmark...');
9
- const benchmark = new hash_table_1.default(100000);
10
- benchmark.run();
11
- // benchmark.benchmarkCustomHashCode();
12
- //# sourceMappingURL=run.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../benchmarks/run.ts"],"names":[],"mappings":";;;;;AAAA,8DAA8C;AAE9C,gBAAgB;AAChB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AACrC,MAAM,SAAS,GAAG,IAAI,oBAAkB,CAAC,MAAM,CAAC,CAAC;AACjD,SAAS,CAAC,GAAG,EAAE,CAAC;AAChB,uCAAuC"}