Skip to content

Instantly share code, notes, and snippets.

@jezinka jezinka/main.js Secret
Created Jun 16, 2017

Embed
What would you like to do?
function countSum(dane) {
var re = /-/gi;
dane = dane.trim();
/*pozbycie się białych znakow z początku i końca */
dane = dane.replace(/ {2,}/g, " "); //zastąpienie podwójnych spacji pojedyncza
var dane2 = dane.replace(re, "");
/*mamy teraz bez "-"*/
var instructions = dane2.split(" ");
/* instructions wygląda: "aczupnetwpmfyyjopalcexpye977[peyac]" - teraz posprawdzać czy to jest prawdziwy pokój;
jeśli tak to wyodrębnić numer- slice(length-10, length-7) ?? bo zawsze w tym samym miejscu od końca jest numer - poprzedzające go stringi mają różną długość*/
var sumId = 0;
var encrypted = []; // nazwa
var id = []; // kod id do sumowania
var checksum = []; // zawartość []
var finall = []; // wyodrębnione 5 najczęstszych liter z encrypted
for (i = 0; i < instructions.length; i++) {
encrypted.push(instructions[i].substring(0, instructions[i].length - 10));
id.push(parseInt(instructions[i].substring(instructions[i].length - 10, instructions[i].length - 7))); // od razu zmiana na liczbę, żeby nie było problemu przy sumowaniu
checksum.push(instructions[i].substring(instructions[i].length - 6, instructions[i].length - 1))
}
for (i = 0; i < encrypted.length; i++) {
Array.prototype.byCount = function () {
var itm, a = [], L = this.length, o = {};
for (var i = 0; i < L; i++) {
itm = this[i];
if (!itm) continue;
if (o[itm] == undefined) o[itm] = 1;
else ++o[itm];
}
for (var p in o) a[a.length] = p;
return a.sort(function (a, b) {
if (o[b] !== o[a]) {
return o[b] - o[a];
}
return a.charCodeAt(0) - b.charCodeAt(0);
});
};
var x = encrypted[i].split("");
var y = x.sort(); // tu będzie ["a", "a", "c", "c", "e", "e", "e", "f", "j", "l", "m", "n", "o", "p", "p", "p", "p", "t", "u", "w", "x", "y", "y", "y", "z"]
var a = y.byCount(); // tu uporządkowane wg częstotliwości ["p", "e", "y", "a", "c", "l", "m", "n", "z", "f", "t", "u", "w", "x", "j", "o"]
var b = a.slice(0, 5);
var c = b.toString();
var re = /,/gi;
var d = c.replace(re, ""); //dostaniemy 5 najczęściej występujących liter - niestety jeśli dwie litery występuja taką samą ilość razy to nie są pokazywane w kolejnośc alfabetycznej
finall.push(d)
}
for (i = 0; i < checksum.length; i++) {
if (checksum[i] === finall[i]) {
sumId += id[i]
}
/* else {
console.log(checksum[i] + " <> " + finall[i]);
}*/
}
return sumId;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.