I have a number, say "123456", and I need to map it to a string, any string. The only constraint on the map functions are:
What map function would produce the shortest strings?
Solutions in JavaScript are preferred.
Note: Clearly the simplest solution is to use the original number, so make sure you solution does better than that.
You may want to use Base 36 or Base 62.
Base 36 would be the most compact for case-insensitive alphanumerical characters, but if you want to exploit case-sensitivity, Base 62 would be approximately 20% more compact.
For Base 36, you can easily use JavaScript's Number.toString(radix)
method, as follows:
var n = 123456;
n.toString(36); // returns: "2n9c"
For Base 62, you may want to check this forum post. Basically you should be able to do the following:
Number.prototype.toBase = function (base) {
var symbols =
"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");
var decimal = this;
var conversion = "";
if (base > symbols.length || base <= 1) {
return false;
}
while (decimal >= 1) {
conversion = symbols[(decimal - (base * Math.floor(decimal / base)))] +
conversion;
decimal = Math.floor(decimal / base);
}
return (base < 11) ? parseInt(conversion) : conversion;
}
var n = 123456;
n.toBase(62); // returns: "w7e"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With