typescript-dsa-stl 2.1.0 → 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.
@@ -1,5 +1,9 @@
1
1
  export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, } from './array.js';
2
2
  export { DisjointSetUnion } from './disjointSetUnion.js';
3
+ export { KnuthMorrisPratt } from './kmp.js';
4
+ export { StringRollingHash } from './stringHashing.js';
5
+ export { RabinKarp, RABIN_KARP_DEFAULT_MODS } from './rabinKarp.js';
6
+ export type { RabinKarpTripleMods } from './rabinKarp.js';
3
7
  export type { WeightedUndirectedEdge } from './graph.js';
4
8
  export { connectedComponents, kruskalMST } from './graph.js';
5
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -1,4 +1,7 @@
1
1
  export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, } from './array.js';
2
2
  export { DisjointSetUnion } from './disjointSetUnion.js';
3
+ export { KnuthMorrisPratt } from './kmp.js';
4
+ export { StringRollingHash } from './stringHashing.js';
5
+ export { RabinKarp, RABIN_KARP_DEFAULT_MODS } from './rabinKarp.js';
3
6
  export { connectedComponents, kruskalMST } from './graph.js';
4
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/algorithms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,GACV,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Knuth–Morris–Pratt (KMP) string matching.
3
+ * Precomputes the LPS (longest proper prefix which is also suffix) table for the pattern,
4
+ * then scans text in O(n + m) time.
5
+ */
6
+ export declare class KnuthMorrisPratt {
7
+ private readonly pattern;
8
+ private readonly lps;
9
+ constructor(pattern: string);
10
+ /** LPS array: lps[i] = length of longest proper prefix of pattern[0..i] that is also a suffix. */
11
+ static buildLps(pattern: string): number[];
12
+ /**
13
+ * All start indices in `text` where `this.pattern` occurs.
14
+ * Empty pattern yields no matches.
15
+ */
16
+ search(text: string): number[];
17
+ /** One-shot: all occurrences of `pattern` in `text`. */
18
+ static findOccurrences(text: string, pattern: string): number[];
19
+ }
20
+ //# sourceMappingURL=kmp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kmp.d.ts","sourceRoot":"","sources":["../../src/algorithms/kmp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;gBAEnB,OAAO,EAAE,MAAM;IAK3B,kGAAkG;IAClG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAoB1C;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IA8B9B,wDAAwD;IACxD,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;CAGhE"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Knuth–Morris–Pratt (KMP) string matching.
3
+ * Precomputes the LPS (longest proper prefix which is also suffix) table for the pattern,
4
+ * then scans text in O(n + m) time.
5
+ */
6
+ export class KnuthMorrisPratt {
7
+ constructor(pattern) {
8
+ this.pattern = pattern;
9
+ this.lps = KnuthMorrisPratt.buildLps(pattern);
10
+ }
11
+ /** LPS array: lps[i] = length of longest proper prefix of pattern[0..i] that is also a suffix. */
12
+ static buildLps(pattern) {
13
+ const m = pattern.length;
14
+ const lps = new Array(m).fill(0);
15
+ let len = 0;
16
+ let i = 1;
17
+ while (i < m) {
18
+ if (pattern[i] === pattern[len]) {
19
+ len++;
20
+ lps[i] = len;
21
+ i++;
22
+ }
23
+ else if (len !== 0) {
24
+ len = lps[len - 1];
25
+ }
26
+ else {
27
+ lps[i] = 0;
28
+ i++;
29
+ }
30
+ }
31
+ return lps;
32
+ }
33
+ /**
34
+ * All start indices in `text` where `this.pattern` occurs.
35
+ * Empty pattern yields no matches.
36
+ */
37
+ search(text) {
38
+ const m = this.pattern.length;
39
+ if (m === 0)
40
+ return [];
41
+ const n = text.length;
42
+ const matches = [];
43
+ let i = 0;
44
+ let j = 0;
45
+ while (i < n) {
46
+ if (text[i] === this.pattern[j]) {
47
+ i++;
48
+ j++;
49
+ }
50
+ if (j === m) {
51
+ matches.push(i - j);
52
+ j = this.lps[j - 1];
53
+ }
54
+ else if (i < n && text[i] !== this.pattern[j]) {
55
+ if (j !== 0) {
56
+ j = this.lps[j - 1];
57
+ }
58
+ else {
59
+ i++;
60
+ }
61
+ }
62
+ }
63
+ return matches;
64
+ }
65
+ /** One-shot: all occurrences of `pattern` in `text`. */
66
+ static findOccurrences(text, pattern) {
67
+ return new KnuthMorrisPratt(pattern).search(text);
68
+ }
69
+ }
70
+ //# sourceMappingURL=kmp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kmp.js","sourceRoot":"","sources":["../../src/algorithms/kmp.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAI3B,YAAY,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,kGAAkG;IAClG,MAAM,CAAC,QAAQ,CAAC,OAAe;QAC7B,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACb,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,GAAG,EAAE,CAAC;gBACN,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBACb,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;gBACrB,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAE,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACX,CAAC,EAAE,CAAC;YACN,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAY;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAEvB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChC,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;YACN,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;YACvB,CAAC;iBAAM,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACZ,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACN,CAAC,EAAE,CAAC;gBACN,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,wDAAwD;IACxD,MAAM,CAAC,eAAe,CAAC,IAAY,EAAE,OAAe;QAClD,OAAO,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Rabin–Karp string matching with **triple hashing**: three independent polynomial hashes
3
+ * (same base, distinct prime moduli). A window is a candidate only when all three hashes
4
+ * match the pattern’s triple—collision probability is negligible; we still verify with a
5
+ * direct character comparison so results are always correct.
6
+ */
7
+ /** Default moduli: distinct large primes (common CP / hashing choices). */
8
+ export declare const RABIN_KARP_DEFAULT_MODS: readonly [1000000007n, 1000000009n, 998244353n];
9
+ export type RabinKarpTripleMods = readonly [bigint, bigint, bigint];
10
+ export declare class RabinKarp {
11
+ private readonly pattern;
12
+ private readonly base;
13
+ private readonly mods;
14
+ /**
15
+ * @param pattern Pattern to search for (UTF-16 code units, same as `charCodeAt`).
16
+ * @param base Shared radix (default 131), same idea as `StringRollingHash`.
17
+ * @param mods Three distinct prime moduli for independent rolling hashes.
18
+ */
19
+ constructor(pattern: string, base?: bigint, mods?: RabinKarpTripleMods);
20
+ private static substringsEqual;
21
+ /** Iterative hash of `s[0..length)` for each modulus. */
22
+ private hashPrefix;
23
+ /** `base^(m-1) mod mods[j]` for sliding the left character out of the window. */
24
+ private powHighForWindow;
25
+ private slideWindow;
26
+ private triplesEqual;
27
+ /**
28
+ * All start indices in `text` where `this.pattern` occurs.
29
+ * Empty pattern yields no matches.
30
+ */
31
+ search(text: string): number[];
32
+ /** One-shot: all occurrences of `pattern` in `text`. */
33
+ static findOccurrences(text: string, pattern: string, base?: bigint, mods?: RabinKarpTripleMods): number[];
34
+ }
35
+ //# sourceMappingURL=rabinKarp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rabinKarp.d.ts","sourceRoot":"","sources":["../../src/algorithms/rabinKarp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,2EAA2E;AAC3E,eAAO,MAAM,uBAAuB,iDAI1B,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpE,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAE3C;;;;OAIG;gBAED,OAAO,EAAE,MAAM,EACf,IAAI,SAAO,EACX,IAAI,GAAE,mBAA6C;IAerD,OAAO,CAAC,MAAM,CAAC,eAAe;IAY9B,yDAAyD;IACzD,OAAO,CAAC,UAAU;IAYlB,iFAAiF;IACjF,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,YAAY;IAIpB;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE;IA4B9B,wDAAwD;IACxD,MAAM,CAAC,eAAe,CACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,SAAO,EACX,IAAI,GAAE,mBAA6C,GAClD,MAAM,EAAE;CAGZ"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Rabin–Karp string matching with **triple hashing**: three independent polynomial hashes
3
+ * (same base, distinct prime moduli). A window is a candidate only when all three hashes
4
+ * match the pattern’s triple—collision probability is negligible; we still verify with a
5
+ * direct character comparison so results are always correct.
6
+ */
7
+ function modNormalize(value, mod) {
8
+ let x = value % mod;
9
+ if (x < 0n)
10
+ x += mod;
11
+ return x;
12
+ }
13
+ /** Default moduli: distinct large primes (common CP / hashing choices). */
14
+ export const RABIN_KARP_DEFAULT_MODS = [
15
+ 1000000007n,
16
+ 1000000009n,
17
+ 998244353n,
18
+ ];
19
+ export class RabinKarp {
20
+ /**
21
+ * @param pattern Pattern to search for (UTF-16 code units, same as `charCodeAt`).
22
+ * @param base Shared radix (default 131), same idea as `StringRollingHash`.
23
+ * @param mods Three distinct prime moduli for independent rolling hashes.
24
+ */
25
+ constructor(pattern, base = 131n, mods = RABIN_KARP_DEFAULT_MODS) {
26
+ if (base <= 0n) {
27
+ throw new RangeError('base must be positive');
28
+ }
29
+ for (let j = 0; j < 3; j++) {
30
+ if (mods[j] <= 0n) {
31
+ throw new RangeError('each mod must be positive');
32
+ }
33
+ }
34
+ this.pattern = pattern;
35
+ this.base = base;
36
+ this.mods = mods;
37
+ }
38
+ static substringsEqual(text, start, pattern, length) {
39
+ for (let k = 0; k < length; k++) {
40
+ if (text[start + k] !== pattern[k])
41
+ return false;
42
+ }
43
+ return true;
44
+ }
45
+ /** Iterative hash of `s[0..length)` for each modulus. */
46
+ hashPrefix(s, length) {
47
+ const h = [0n, 0n, 0n];
48
+ const { base, mods } = this;
49
+ for (let i = 0; i < length; i++) {
50
+ const c = BigInt(s.charCodeAt(i));
51
+ for (let j = 0; j < 3; j++) {
52
+ h[j] = modNormalize(h[j] * base + c, mods[j]);
53
+ }
54
+ }
55
+ return h;
56
+ }
57
+ /** `base^(m-1) mod mods[j]` for sliding the left character out of the window. */
58
+ powHighForWindow(m) {
59
+ const out = [1n, 1n, 1n];
60
+ const { base, mods } = this;
61
+ for (let j = 0; j < 3; j++) {
62
+ let p = 1n;
63
+ const mod = mods[j];
64
+ for (let i = 0; i < m - 1; i++) {
65
+ p = modNormalize(p * base, mod);
66
+ }
67
+ out[j] = p;
68
+ }
69
+ return out;
70
+ }
71
+ slideWindow(window, left, right, powHigh) {
72
+ const next = [0n, 0n, 0n];
73
+ const { base, mods } = this;
74
+ for (let j = 0; j < 3; j++) {
75
+ const mod = mods[j];
76
+ const w = window[j];
77
+ const ph = powHigh[j];
78
+ next[j] = modNormalize(modNormalize(w - modNormalize(left * ph, mod), mod) * base + right, mod);
79
+ }
80
+ return next;
81
+ }
82
+ triplesEqual(a, b) {
83
+ return a[0] === b[0] && a[1] === b[1] && a[2] === b[2];
84
+ }
85
+ /**
86
+ * All start indices in `text` where `this.pattern` occurs.
87
+ * Empty pattern yields no matches.
88
+ */
89
+ search(text) {
90
+ const pat = this.pattern;
91
+ const m = pat.length;
92
+ const n = text.length;
93
+ if (m === 0)
94
+ return [];
95
+ if (m > n)
96
+ return [];
97
+ const patHash = this.hashPrefix(pat, m);
98
+ let windowHash = this.hashPrefix(text, m);
99
+ const powHigh = this.powHighForWindow(m);
100
+ const matches = [];
101
+ for (let i = 0; i <= n - m; i++) {
102
+ if (this.triplesEqual(windowHash, patHash) &&
103
+ RabinKarp.substringsEqual(text, i, pat, m)) {
104
+ matches.push(i);
105
+ }
106
+ if (i + m >= n)
107
+ break;
108
+ const left = BigInt(text.charCodeAt(i));
109
+ const right = BigInt(text.charCodeAt(i + m));
110
+ windowHash = this.slideWindow(windowHash, left, right, powHigh);
111
+ }
112
+ return matches;
113
+ }
114
+ /** One-shot: all occurrences of `pattern` in `text`. */
115
+ static findOccurrences(text, pattern, base = 131n, mods = RABIN_KARP_DEFAULT_MODS) {
116
+ return new RabinKarp(pattern, base, mods).search(text);
117
+ }
118
+ }
119
+ //# sourceMappingURL=rabinKarp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rabinKarp.js","sourceRoot":"","sources":["../../src/algorithms/rabinKarp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Polynomial rolling hash on a string: prefix hashes and powers of base
3
+ * support O(1) substring hash queries after O(n) preprocessing.
4
+ */
5
+ export declare class StringRollingHash {
6
+ private readonly n;
7
+ private readonly base;
8
+ private readonly mod;
9
+ private readonly prefix;
10
+ private readonly pow;
11
+ /**
12
+ * @param s Source string (UTF-16 code units, same as `charCodeAt`).
13
+ * @param base Must be positive and coprime to `mod` for typical use.
14
+ * @param mod Prime modulus (e.g. 1_000_000_007n).
15
+ */
16
+ constructor(s: string, base?: bigint, mod?: bigint);
17
+ /** Full string hash (same as substringHash(0, length)). */
18
+ fullHash(): bigint;
19
+ /**
20
+ * Hash of `s.substring(start, start + length)` using the configured base and mod.
21
+ * Indices are in [0, n); `length` must be non-negative and `start + length <= n`.
22
+ */
23
+ substringHash(start: number, length: number): bigint;
24
+ /** Underlying string length. */
25
+ length(): number;
26
+ }
27
+ //# sourceMappingURL=stringHashing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringHashing.d.ts","sourceRoot":"","sources":["../../src/algorithms/stringHashing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAW;IAE/B;;;;OAIG;gBACS,CAAC,EAAE,MAAM,EAAE,IAAI,SAAO,EAAE,GAAG,SAAiB;IAqBxD,2DAA2D;IAC3D,QAAQ,IAAI,MAAM;IAIlB;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAapD,gCAAgC;IAChC,MAAM,IAAI,MAAM;CAGjB"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Polynomial rolling hash on a string: prefix hashes and powers of base
3
+ * support O(1) substring hash queries after O(n) preprocessing.
4
+ */
5
+ function modNormalize(value, mod) {
6
+ let x = value % mod;
7
+ if (x < 0n)
8
+ x += mod;
9
+ return x;
10
+ }
11
+ export class StringRollingHash {
12
+ /**
13
+ * @param s Source string (UTF-16 code units, same as `charCodeAt`).
14
+ * @param base Must be positive and coprime to `mod` for typical use.
15
+ * @param mod Prime modulus (e.g. 1_000_000_007n).
16
+ */
17
+ constructor(s, base = 131n, mod = 1000000007n) {
18
+ if (mod <= 0n) {
19
+ throw new RangeError('mod must be positive');
20
+ }
21
+ if (base <= 0n) {
22
+ throw new RangeError('base must be positive');
23
+ }
24
+ this.n = s.length;
25
+ this.base = base;
26
+ this.mod = mod;
27
+ this.prefix = new Array(this.n + 1);
28
+ this.pow = new Array(this.n + 1);
29
+ this.prefix[0] = 0n;
30
+ this.pow[0] = 1n;
31
+ for (let i = 0; i < this.n; i++) {
32
+ this.pow[i + 1] = modNormalize(this.pow[i] * base, mod);
33
+ const c = BigInt(s.charCodeAt(i));
34
+ this.prefix[i + 1] = modNormalize(this.prefix[i] * base + c, mod);
35
+ }
36
+ }
37
+ /** Full string hash (same as substringHash(0, length)). */
38
+ fullHash() {
39
+ return this.prefix[this.n];
40
+ }
41
+ /**
42
+ * Hash of `s.substring(start, start + length)` using the configured base and mod.
43
+ * Indices are in [0, n); `length` must be non-negative and `start + length <= n`.
44
+ */
45
+ substringHash(start, length) {
46
+ if (length < 0) {
47
+ throw new RangeError('length must be non-negative');
48
+ }
49
+ if (start < 0 || start + length > this.n) {
50
+ throw new RangeError('substring range out of bounds');
51
+ }
52
+ const end = start + length;
53
+ const high = this.prefix[end];
54
+ const low = modNormalize(this.prefix[start] * this.pow[length], this.mod);
55
+ return modNormalize(high - low, this.mod);
56
+ }
57
+ /** Underlying string length. */
58
+ length() {
59
+ return this.n;
60
+ }
61
+ }
62
+ //# sourceMappingURL=stringHashing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stringHashing.js","sourceRoot":"","sources":["../../src/algorithms/stringHashing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,SAAS,YAAY,CAAC,KAAa,EAAE,GAAW;IAC9C,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;IACpB,IAAI,CAAC,GAAG,EAAE;QAAE,CAAC,IAAI,GAAG,CAAC;IACrB,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,OAAO,iBAAiB;IAO5B;;;;OAIG;IACH,YAAY,CAAS,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,GAAG,WAAc;QACtD,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;YACd,MAAM,IAAI,UAAU,CAAC,sBAAsB,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAAC,uBAAuB,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,CAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,QAAQ;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,KAAa,EAAE,MAAc;QACzC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAC;QACtD,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5E,OAAO,YAAY,CAAC,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,gCAAgC;IAChC,MAAM;QACJ,OAAO,IAAI,CAAC,CAAC,CAAC;IAChB,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -7,8 +7,8 @@
7
7
  */
8
8
  export { Vector, Stack, Queue, List, ListNode, PriorityQueue, OrderedMap, UnorderedMap, OrderedSet, UnorderedSet, OrderedMultiSet, OrderedMultiMap, addEdge, deleteEdge, createAdjacencyList, createWeightedAdjacencyList, } from './collections/index.js';
9
9
  export type { WeightedEdge, AdjacencyList, WeightedAdjacencyList } from './collections/index.js';
10
- export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, connectedComponents, kruskalMST, } from './algorithms/index.js';
11
- export type { WeightedUndirectedEdge } from './algorithms/index.js';
10
+ export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, KnuthMorrisPratt, StringRollingHash, RabinKarp, RABIN_KARP_DEFAULT_MODS, connectedComponents, kruskalMST, } from './algorithms/index.js';
11
+ export type { WeightedUndirectedEdge, RabinKarpTripleMods } from './algorithms/index.js';
12
12
  export { clamp, range, noop, identity, swap } from './utils/index.js';
13
13
  export type { Comparator, Predicate, UnaryFn, Reducer, IterableLike } from './types/index.js';
14
14
  export { toArray } from './types/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACtE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * import { Vector, Stack, Queue, List, sort, binarySearch, clamp } from 'typescript-dsa-stl';
7
7
  */
8
8
  export { Vector, Stack, Queue, List, ListNode, PriorityQueue, OrderedMap, UnorderedMap, OrderedSet, UnorderedSet, OrderedMultiSet, OrderedMultiMap, addEdge, deleteEdge, createAdjacencyList, createWeightedAdjacencyList, } from './collections/index.js';
9
- export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, connectedComponents, kruskalMST, } from './algorithms/index.js';
9
+ export { sort, find, findIndex, transform, filter, reduce, reverse, unique, binarySearch, lowerBound, upperBound, min, max, partition, DisjointSetUnion, KnuthMorrisPratt, StringRollingHash, RabinKarp, RABIN_KARP_DEFAULT_MODS, connectedComponents, kruskalMST, } from './algorithms/index.js';
10
10
  export { clamp, range, noop, identity, swap } from './utils/index.js';
11
11
  export { toArray } from './types/index.js';
12
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,MAAM,EACN,KAAK,EACL,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,eAAe,EACf,eAAe,EACf,OAAO,EACP,UAAU,EACV,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,SAAS,EACT,MAAM,EACN,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,UAAU,EACV,UAAU,EACV,GAAG,EACH,GAAG,EACH,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,SAAS,EACT,uBAAuB,EACvB,mBAAmB,EACnB,UAAU,GACX,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC"}
package/package.json CHANGED
@@ -1,85 +1,85 @@
1
- {
2
- "name": "typescript-dsa-stl",
3
- "version": "2.1.0",
4
- "description": "STL-style data structures and algorithms for TypeScript: Vector, Stack, Queue, List, PriorityQueue, Map, Set, sort, binarySearch, graph utilities. Use like C++ STL.",
5
- "type": "module",
6
- "main": "dist/index.js",
7
- "module": "dist/index.js",
8
- "types": "dist/index.d.ts",
9
- "sideEffects": false,
10
- "exports": {
11
- ".": {
12
- "types": "./dist/index.d.ts",
13
- "import": "./dist/index.js",
14
- "default": "./dist/index.js"
15
- },
16
- "./collections": {
17
- "types": "./dist/collections/index.d.ts",
18
- "import": "./dist/collections/index.js",
19
- "default": "./dist/collections/index.js"
20
- },
21
- "./algorithms": {
22
- "types": "./dist/algorithms/index.d.ts",
23
- "import": "./dist/algorithms/index.js",
24
- "default": "./dist/algorithms/index.js"
25
- },
26
- "./utils": {
27
- "types": "./dist/utils/index.d.ts",
28
- "import": "./dist/utils/index.js",
29
- "default": "./dist/utils/index.js"
30
- },
31
- "./types": {
32
- "types": "./dist/types/index.d.ts",
33
- "import": "./dist/types/index.js",
34
- "default": "./dist/types/index.js"
35
- }
36
- },
37
- "files": [
38
- "dist",
39
- "README.md",
40
- "LICENSE"
41
- ],
42
- "scripts": {
43
- "build": "tsc",
44
- "prepublishOnly": "npm run build"
45
- },
46
- "keywords": [
47
- "typescript",
48
- "data-structures",
49
- "algorithms",
50
- "stl",
51
- "dsa",
52
- "vector",
53
- "stack",
54
- "queue",
55
- "list",
56
- "priority-queue",
57
- "map",
58
- "set",
59
- "ordered-map",
60
- "unordered-map",
61
- "ordered-multimap",
62
- "ordered-multiset",
63
- "multimap",
64
- "multiset",
65
- "binary-search",
66
- "collections",
67
- "sdk"
68
- ],
69
- "author": "",
70
- "license": "MIT",
71
- "repository": {
72
- "type": "git",
73
- "url": "https://github.com/SajidAbdullah729/TypeScript_DSA.git"
74
- },
75
- "homepage": "https://github.com/SajidAbdullah729/TypeScript_DSA#readme",
76
- "bugs": {
77
- "url": "https://github.com/SajidAbdullah729/TypeScript_DSA/issues"
78
- },
79
- "engines": {
80
- "node": ">=18"
81
- },
82
- "devDependencies": {
83
- "typescript": "^5.3.0"
84
- }
85
- }
1
+ {
2
+ "name": "typescript-dsa-stl",
3
+ "version": "2.2.0",
4
+ "description": "STL-style data structures and algorithms for TypeScript: Vector, Stack, Queue, List, PriorityQueue, Map, Set, sort, binarySearch, graph utilities. Use like C++ STL.",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "sideEffects": false,
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "./collections": {
17
+ "types": "./dist/collections/index.d.ts",
18
+ "import": "./dist/collections/index.js",
19
+ "default": "./dist/collections/index.js"
20
+ },
21
+ "./algorithms": {
22
+ "types": "./dist/algorithms/index.d.ts",
23
+ "import": "./dist/algorithms/index.js",
24
+ "default": "./dist/algorithms/index.js"
25
+ },
26
+ "./utils": {
27
+ "types": "./dist/utils/index.d.ts",
28
+ "import": "./dist/utils/index.js",
29
+ "default": "./dist/utils/index.js"
30
+ },
31
+ "./types": {
32
+ "types": "./dist/types/index.d.ts",
33
+ "import": "./dist/types/index.js",
34
+ "default": "./dist/types/index.js"
35
+ }
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "README.md",
40
+ "LICENSE"
41
+ ],
42
+ "scripts": {
43
+ "build": "tsc",
44
+ "prepublishOnly": "npm run build"
45
+ },
46
+ "keywords": [
47
+ "typescript",
48
+ "data-structures",
49
+ "algorithms",
50
+ "stl",
51
+ "dsa",
52
+ "vector",
53
+ "stack",
54
+ "queue",
55
+ "list",
56
+ "priority-queue",
57
+ "map",
58
+ "set",
59
+ "ordered-map",
60
+ "unordered-map",
61
+ "ordered-multimap",
62
+ "ordered-multiset",
63
+ "multimap",
64
+ "multiset",
65
+ "binary-search",
66
+ "collections",
67
+ "sdk"
68
+ ],
69
+ "author": "",
70
+ "license": "MIT",
71
+ "repository": {
72
+ "type": "git",
73
+ "url": "https://github.com/SajidAbdullah729/TypeScript_DSA.git"
74
+ },
75
+ "homepage": "https://github.com/SajidAbdullah729/TypeScript_DSA#readme",
76
+ "bugs": {
77
+ "url": "https://github.com/SajidAbdullah729/TypeScript_DSA/issues"
78
+ },
79
+ "engines": {
80
+ "node": ">=18"
81
+ },
82
+ "devDependencies": {
83
+ "typescript": "^5.3.0"
84
+ }
85
+ }