JavaScript
// Build an alphabetic / alphanumeric index lookup
// Scales three characters deep
// Should work for any int up to i = 143,364 when alphabetic (object-safe keys) Math.pow(s.length, 3) + Math.pow(s.length, 2) + s.length
// This can be scaled further by extending s to include digits, characters, etc. (242,234 if alphanumeric)
function generateLookup (length) {
var s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; // Alphabetic
// var s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; // Alphanumeric
var lookup = [];
for (var i = 0; i < length; i++) {
var out = '';
var l = s.length;
var b = Math.floor(i / l) - 1;
if (b >= l) {
var c = Math.floor(b / l);
b -= c * l;
out += s[c-1];
}
if (b >= 0) out += s[b];
out += s[(i % l)];
lookup.push(out);
}
return lookup;
}
/**
* console.save() function (download a json file)
*/
(function (console) {
console.save = function (data, filename) {
if (!data) return console.error('Console.save: No data');
if (typeof data === "object") data = JSON.stringify(data, undefined, 4);
if (!filename) filename = 'console.json';
var b = new Blob([data], {type: 'text/json'}),
e = document.createEvent('MouseEvents'),
a = document.createElement('a');
a.download = filename;
a.href = window.URL.createObjectURL(b);
a.dataset.downloadurl = ['text/json', a.download, a.href].join(':');
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
}
})(console);
// Alphanumeric lookup to 1024 places
var alphanumericLookup = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "aa", "ab",...