Ocena użytkownikóww: ***** / 5
Nadesłany przez Karol Gontarski, 06 lutego 2013 22:28
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
dowod_osobisty.js:
var nd = "ASY856032";
num = eval(nd.length===9 && parseInt(nd[3]) === eval(nd.split("").map(function(v, i) {return(v.charCodeAt() * [7,3,1,0,7,3,1,7,3][i]) - [385,165,55,0,336,144,48,336,144][i];}).join('+'))%10);
// | | | | |> mapowanie liter i przemnożenie przez wektor [7,3,1,0,7,3,1,7,3] |>odjęcie różnicy wartości tab. ASCII | | |> modulo 10
// |> sprawdzenie dlugości | | |> zamiana numeru na tablice | |> ewaluacja stringa
// | |> sprawdzenie poprawności sumy kontrolnej |> zamiana tablicy na string
// |> pobranie sumy kontrolnej
console.log(num);