Skip to content

Commit 58fb249

Browse files
authored
Merge pull request #18 from NDevTK/bolt-optimize-base2base-7453167660047134215
⚡ Bolt: Optimize base2base with BigInt
2 parents e2d6b40 + 5152e63 commit 58fb249

3 files changed

Lines changed: 21 additions & 27 deletions

File tree

dictionary.dic

9.17 KB
Binary file not shown.

js/footer.js

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -277,42 +277,33 @@ function base2base(srcAlphabet, dstAlphabet) {
277277
var noDifference = srcAlphabet === dstAlphabet,
278278
srcAlphabet = [...new Set([...srcAlphabet].join(''))],
279279
dstAlphabet = [...new Set([...dstAlphabet].join(''))],
280-
fromBase = srcAlphabet.length,
281-
toBase = dstAlphabet.length;
280+
fromBase = BigInt(srcAlphabet.length),
281+
toBase = BigInt(dstAlphabet.length);
282282

283283
// Optimization: Pre-compute lookup map for O(1) access
284284
var srcMap = {};
285285
for (var i = 0; i < srcAlphabet.length; i++) {
286-
srcMap[srcAlphabet[i]] = i;
286+
srcMap[srcAlphabet[i]] = BigInt(i);
287287
}
288288

289289
return (number) => {
290290
if (noDifference) return number;
291291

292-
number = [...number];
293-
294-
var i,
295-
divide,
296-
newlen,
297-
length = number.length,
298-
result = [],
299-
numberMap = new Array(length);
300-
301-
for (i = 0; i < length; i++) numberMap[i] = srcMap[number[i]];
302-
303-
do {
304-
divide = 0;
305-
newlen = 0;
306-
for (i = 0; i < length; i++) {
307-
divide = divide * fromBase + numberMap[i];
308-
if (divide >= toBase) {
309-
numberMap[newlen++] = parseInt(divide / toBase, 10);
310-
divide = divide % toBase;
311-
} else if (newlen) numberMap[newlen++] = 0;
312-
}
313-
length = newlen;
314-
result.push(dstAlphabet[divide]);
315-
} while (newlen != 0);
292+
var val = 0n;
293+
for (var i = 0; i < number.length; i++) {
294+
var char = number[i];
295+
if (srcMap[char] === undefined) continue;
296+
val = val * fromBase + srcMap[char];
297+
}
298+
299+
if (val === 0n) return dstAlphabet[0];
300+
301+
var result = [];
302+
while (val > 0n) {
303+
var remainder = val % toBase;
304+
result.push(dstAlphabet[Number(remainder)]);
305+
val = val / toBase;
306+
}
316307

317308
return result.reverse().join('');
318309
};

server.log

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
127.0.0.1 - - [31/Jan/2026 12:33:57] "GET /?theme=emoji.css HTTP/1.1" 200 -
2+
127.0.0.1 - - [31/Jan/2026 12:35:04] "GET /test.html?theme=emoji.css HTTP/1.1" 200 -
3+
127.0.0.1 - - [31/Jan/2026 12:35:04] "GET /js/footer.js HTTP/1.1" 200 -

0 commit comments

Comments
 (0)