Files
2026-01-23 01:33:35 +01:00

39 lines
1.2 KiB
JavaScript

/* CONSTANTS */
const ALPHABET = 'abcdefghijklmnopqrstuvwxyz';
/* HELPERS */
const int2alpha = (int) => {
let alpha = '';
while (int > 0) {
const reminder = (int - 1) % 26;
alpha = ALPHABET[reminder] + alpha;
int = Math.floor((int - 1) / 26);
}
return alpha;
};
const alpha2int = (str) => {
let int = 0;
for (let i = 0, l = str.length; i < l; i++) {
int = (int * 26) + ALPHABET.indexOf(str[i]) + 1;
}
return int;
};
/* MAIN */
// This isn't the most efficient way to do it, but it's extremely compact and we don't care about the performance of creating the ranges too much
const makeRangeInt = (start, end) => {
if (end < start)
return makeRangeInt(end, start);
const range = [];
while (start <= end) {
range.push(start++);
}
return range;
};
const makeRangePaddedInt = (start, end, paddingLength) => {
return makeRangeInt(start, end).map(int => String(int).padStart(paddingLength, '0'));
};
const makeRangeAlpha = (start, end) => {
return makeRangeInt(alpha2int(start), alpha2int(end)).map(int2alpha);
};
/* EXPORT */
export { makeRangeInt, makeRangePaddedInt, makeRangeAlpha };