Vigenaire Ciper
by Retsam19
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/2.4.1/lodash.js"></script>
<script src="https://rawgithub.com/nnnick/Chart.js/master/Chart.js"></script>
JavaScript
var text = "lkbnqlcytfysryucocphgbdizzfcmjwkuchzyeswfogmmetwwossdchrzyldsbwnydednzwnefydthtddbojicemlucdygicczhoadrzcylwadsxpilpiecskomoltejtkmqqymehpmmjxyolwpeewjckznpccpsvsxauyodhalmriocwpelwbcniyfxmwjcemcyrazdqlsomdbfljwnbijxpddsyoehxpceswtoxwbleecsaxcnuetzywfn"
var keyLength = 5;
var alphabet = _.times(26, function(i) {return String.fromCharCode(97+i)});
var buckets = _.times(keyLength, function () {return ""});
_.each(text.split(""), function(letter, index) {
buckets[index % keyLength] += letter;
});
_.each(buckets, function(b, index) {
var label = document.createElement("span");
label.innerHTML = "Modulus "+index+":";
var canvas = document.createElement("canvas");
canvas.width = 500;
canvas.height = 300;
var ctx = canvas.getContext("2d");
var chartData = {
labels: alphabet,
datasets: [{
data: frequencyCount(b)
}]
};
var chart = new Chart(ctx).Bar(chartData);
document.body.appendChild(label);
document.body.appendChild(document.createElement("br"));
document.body.appendChild(canvas);
document.body.appendChild(document.createElement("br"));
});
function frequencyCount(text) {
var counts = _.countBy(text.split(""));
return _.map(alphabet, function (letter) {
return counts[letter] || 0;
});
}