Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как решить задачу с codewars?

VIktor Ученик (43), на голосовании 1 год назад
Напишите функцию , persistenceкоторая принимает положительный параметр numи возвращает его мультипликативную постоянство, то есть количество раз, которое вы должны умножить на цифры num, пока не получите одну цифру.

Например (Ввод --> Вывод) :

39 --> 3 (because 3*9 = 27, 2*7 = 14, 1*4 = 4 and 4 has only one digit)
999 --> 4 (because 9*9*9 = 729, 7*2*9 = 126, 1*2*6 = 12, and finally 1*2 = 2)
4 --> 0 (because 4 is already a one-digit number)
 function persistence(number) { 
let i = 0;
while (number > 9) {
i++;
let [a, ...b] = number.toString();
for (let k of b) a *= k;
number = a;
}
return i;
}
нашел код на эту задачу, но хотелось бы понять как он работает
Голосование за лучший ответ
Молот Шотландцев Высший разум (300965) 1 год назад
Допустим функция берет параметром number число 4566
Задаем счетчик i и цикл while, который выполняется пока параметр number больше 9, то есть не является однозначным числом.
На каждом шаге число преобразуется в массив цифр этого числа.
let [a, ...b] = number.toString();
Цикл for ... of получает произведение цифр нашего числа.
4*5*6*6= 720
Плюсуем счетчик i на один.
Параметр number меняем с 4566 на получившееся 720
720 > 9. Продолжаем цикл while.
Повторяем. 7*2*0 = 14
number = 14
i += 1
1 +1 = 2
Повторяем. 1 * 4 = 4
number = 4
4 меньше 9
Выполнилось условие выхода из whille. Возвращаем то что накопилось в i.
Это число 2.
Хотя ты и не заслуживаешь помощи...
VIktorУченик (43) 1 год назад
боже, вы вообще что ли ноулайфер который в интернете живет? я в шоке, азхппзх, идите прогуляйтесь, чисто чел ненавидит весь род человеческий походу
Похожие вопросы