嘔心瀝血演算法題——密碼發生器
阿新 • • 發佈:2018-12-26
// 在對銀行賬戶等重要許可權設定密碼的時候,我們常常遇到這樣的煩惱:如果為了好記用生日吧, // 容易被破解,不安全;如果設定不好記的密碼,又擔心自己也會忘記;如果寫在紙上,擔心紙張被別人發現或弄丟了... // 這個程式的任務就是把一串拼音字母轉換為6位數字(密碼)。 // 我們可以使用任何好記的拼音串(比如名字,王喜明,就寫:wangximing)作為輸入,程式輸出6位數字。 // 變換的過程如下: // 第一步.把字串6個一組摺疊起來,比如wangximing則變為: // wangxi // ming // 第二步.把所有垂直在同一個位置的字元的ascii碼值相加,得出6個數字,如上面的例子,則得出: // 228 202 220 206 120 105 // 第三步.再把每個數字“縮位”處理:就是把每個位的數字相加,得出的數字如果不是一位數字, // 就再縮位,直到變成一位數字為止。例如: 228 => 2 + 2 + 8=12 => 1 + 2=3 // 上面的數字縮位後變為:344836, 這就是程式最終的輸出結果! function f1(str) { let arr = [0, 0, 0, 0, 0, 0]; for (let i = 0; i < 6; i++) { for (let j = i; j < str.length; j += 6) { arr[i] += str.charAt(j).charCodeAt(); } } console.log(arr); return arr; } function f2(arr) { let result = ''; for (let i = 0; i < arr.length; i++) { let temp; let tempStr = arr[i] + ''; do { temp = 0; for (let j = 0; j < tempStr.length; j++) { temp += parseInt(tempStr.charAt(j)); } tempStr = temp + ''; } while (temp > 9); result += temp; } return result; } let arr = f1("wangximing"); let mima = f2(arr); console.log(mima);