Mea
by rgthree
HTML
<pre id="console"></pre>
CSS
pre {
font-size: 10px;
}
JavaScript
// http://puzzling.stackexchange.com/questions/41756/meatsacks-please-help-us-decipher-this-code
let console = document.getElementById('console');
let divider1 = '=========================';
let divider2 = '------------------------';
let log = function(msg) {
console.innerHTML += '\n' + msg;
};
let rot13 = function(s)
{
return (s ? s : this).split('').map(function(_)
{
if (!_.match(/[A-Za-z]/)) return _;
c = Math.floor(_.charCodeAt(0) / 97);
k = (_.toLowerCase().charCodeAt(0) - 83) % 26 || 26;
return String.fromCharCode(k + ((c == 0) ? 64 : 96));
}).join('');
}
let alpha = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let message = '260504040140406302560010302560010303020560501604013025600404001030256001056001302560401300302560501404010302605040401404063020560604040130256050401401030302605040401404063025604013002560504014010303025605014040103025605040140103025600103025600404001030260404063020560060606013030256050140103025600404001030302560010560013020560604040130';
let substitute = function(code, opt_num, opt_sum, opt_alpha) {
let num = (opt_num || 0) + 1;
let str = '';
let ms = String(code).match(new RegExp(`.{1,${num}}`, 'g'));
(ms || []).forEach((l) => {
str += handleLetter(l, opt_sum, opt_alpha);
});
return str;
};
let handleLetter = function(part, opt_sum, opt_alpha) {
let sum = !!opt_sum;
let n = 0;
let abc = opt_alpha || alpha;
if (sum) {
let ms = part.match(new RegExp(`.`, 'g'));
(ms || []).forEach((ns) => {
n += parseInt(ns, 10);
});
} else {
n = parseInt(part, 10);
}
if(n > abc.length - 1) {
//log(`[WARNING] ${n} at is over ${alpha.length}`);
n = n % abc.length;
}
return abc[n]
}
log(divider1);
log('Splitting message');
log(divider1);
let i = 0;
for (i = 1; i < message.length; i++) {
if (message.length % i !== 0) {
//log (`Skipping ${i} -- Does not divide equally`);
//log(divider2);
continue;
}
log(`Splitting by ${i}`);
matches =...