6kyu Persistent Bugger
題目:
Write a function, persistence, that takes in a positive parameter num and returns its multiplicative persistence, which is the number of times you must multiply the digits in num until you reach a single digit.
編寫一個函數(shù),持久性,它接受一個正參數(shù)num并返回它的乘法持久性,這就是你必須將數(shù)字中的數(shù)字乘上數(shù)字直到你到達(dá)一個數(shù)字的次數(shù)。
For example:
persistence(39) === 3 // because 3*9 = 27, 2*7 = 14, 1*4=4 // and 4 has only one digit persistence(999) === 4 // because 9*9*9 = 729, 7*2*9 = 126, // 1*2*6 = 12, and finally 1*2 = 2 persistence(4) === 0 // because 4 is already a one-digit number?Sample Tests:
describe('Initial Tests', function () {Test.assertEquals(persistence(39),3);Test.assertEquals(persistence(4),0);Test.assertEquals(persistence(25),2);Test.assertEquals(persistence(999),4); });?
答案:
// 1
????????????? function persistence(num) {
???????????????????? var times = 0;
???????????????????? num = num.toString();
???????????????????? while (num.length > 1) {
??????????????????????????? times++;
??????????????????????????? num = num.split('').map(Number).reduce((a, b) => a * b).toString();
???????????????????? }
???????????????????? return times;
????????????? }
?
????????????? // 2
????????????? const persistence = num => {
???????????????????? return `${num}`.length > 1 ? 1 + persistence(`${num}`.split('').reduce((a, b) => a * +b)) : 0;
???????????????????? // +b 隱式類型轉(zhuǎn)換 字符串轉(zhuǎn)數(shù)字 +前為空自動默認(rèn)為求和運算而不是字符串拼接
???????????????????? // * - / % 都可以隱式類型轉(zhuǎn)換 字符串轉(zhuǎn)數(shù)字
???????????????????? // 此處并不需要+? a和b都是字符串 a*b 隱式轉(zhuǎn)換為數(shù)字
????????????? }
?
????????????? // 3
????????????? function persistence(num) {
???????????????????? var i = 0;
???????????????????? for (i; num.toString().length > 1; i++) {
??????????????????????????? num = num.toString().split('').reduce()(function(x,y){return x * y});
???????????????????? }
???????????????????? return i;
????????????? }
?
????????????? // 4
????????????? const prod = (n) => (n + '').split('').reduce((p,v) => p * v, 1)
????????????? function persistence(num) {
???????????????????? let p = 0;
???????????????????? while (num > 9) {
??????????????????????????? num = prod (num);
??????????????????????????? p++;
???????????????????? }
???????????????????? return p;
????????????? }
轉(zhuǎn)載于:https://www.cnblogs.com/tong24/p/7306247.html
總結(jié)
以上是生活随笔為你收集整理的6kyu Persistent Bugger的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言学习笔记 (005) - 二维数组
- 下一篇: ASP.NET Core 异常重试组件