thodelu

DP 321

HTML

<input type="text" id="cipher" size="50" value="NLWC WC M NECN" />
<input type="button" id="go" value="go" />
<div id="solutions">
</div>

CSS

input {
  width: 100%;
  padding: 5px;
  margin: 5px;
}

JavaScript

var dictWords = [];

$.ajax("https://raw.githubusercontent.com/first20hours/google-10000-english/master/google-10000-english.txt").done(function(data) {
  dictWords = data.split(/[^\w]/);
});

var as = [9, 21, 15, 19, 7, 23, 11, 5, 17, 25];

$("#go").click(function() {
  $("#solutions").empty();
  var cipherWords = $("#cipher").val().split(/[^\w]/);
  for (var i = 0; i < as.length; i++) {
    var a = as[i];
    for (var b = 0; b < 26; b++) {
      var clearText = "";
      for (var j = 0; j < cipherWords.length; j++) {
        var cipher = cipherWords[j];
        var clearArray = [];
        for (var k = 0; k < cipher.length; k++) {
          var c = cipher.charCodeAt(k) - 65;
          var p = (26 * 26 + a * (c - b)) % 26;
          clearArray.push(String.fromCharCode(p + 97));
        }
        var clear = clearArray.join("");
        if (dictWords.includes(clear)) {
          clearText += clear + " ";
        } else {
          clearText = "";
          break;
        }
      }
      if (clearText != "") {
        var solution = "<p>" + clearText + "</p>";
        $(solution).appendTo("#solutions");
      }
    }
  };
  alert("Done.");
});