Найти в Дзене

Решаем задачу на codewars с помощью javascript: напишите функцию persistence

Всем привет, сегодня я Вам расскажу, как решать новую задачу. А если быть точнее, то как решал её именно я. Условие задачи: Напишите функцию persistence, которая принимает положительный параметр num и возвращает его мультипликативную стойкость, то есть количество раз, которые вы должны умножить на цифры в num, пока не получите единственную цифру. Ничего не понятно? Тогда прочитай эту статью до конца и всё поймёшь. Вот это условие можно переделать в описание в несколько слов. Вы умножаете цифры числа до того момента пока результат перемножения не покажет одну цифру. То есть у Вас есть цифра 39 перемножая её цифры Вы получите число 27 Перемножая цифры 2 и 7 Вы получите результат 14, а перемножая 1 и 4 Вы получите число 4, казалось бы всё просто, но наша задача отследить количество раз перемножений и это будет ответом. Однако каким образом мы должны написать такую программу? Да ещё и на javascript! Давайте перечислим, что нам для этого нужно. Несколько буферных переменных, счётчиков и вл

Всем привет, сегодня я Вам расскажу, как решать новую задачу. А если быть точнее, то как решал её именно я. Условие задачи:

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

Ничего не понятно? Тогда прочитай эту статью до конца и всё поймёшь. Вот это условие можно переделать в описание в несколько слов. Вы умножаете цифры числа до того момента пока результат перемножения не покажет одну цифру. То есть у Вас есть цифра 39 перемножая её цифры Вы получите число 27 Перемножая цифры 2 и 7 Вы получите результат 14, а перемножая 1 и 4 Вы получите число 4, казалось бы всё просто, но наша задача отследить количество раз перемножений и это будет ответом. Однако каким образом мы должны написать такую программу? Да ещё и на javascript! Давайте перечислим, что нам для этого нужно. Несколько буферных переменных, счётчиков и вложенный цикл. Но, что и для чего давайте разбираться, начнём с начала программы. Изначально нам передаётся в функцию аргумент с числом, функция называется persistence, а число записывается в переменную num.

-2

Создаём счётчик называем counter для того, чтобы отсчитывать сколько раз мы перемножили.

-3

Создаём буферную переменную для того, чтобы выявлять после перемножений, осталось ли число из одной цифры или же нет.

-4

После всего этого пишем цикл, с помощью которого выявляем состоит ли число из одной цифры и если оно будет состоять из одной цифры, то цикл прекратится и перейдём к результатам.

-5

Увеличиваем в цикле наш счётчик.

-6

Создаём внутреннюю буферную переменную, чтобы проводить математические операции с числом.

-7

То есть дальше в внутреннем цикле мы будем перемножать цифры.

-8

В буфер будем сохранять наш результат.

-9

С помощью newBufer будем проводить перебор цифр.

-10

Создаём внутренний цикл, в котором мы будем перебирать цифры, чтобы их перемножить.

-11

Перебираем мы их за счёт деления на цело, что позволяет нам метод floor объекта math. Если коротко объяснить, то когда мы делим нацело на 10, то мы просто удаляем последнюю цифру, но как же мы будем перебирать если мы просто удаляем цифры? Ведь если от числа 300 удалить одну цифру, то получиться 30, а не одна цифра.

-12

Для этого мы используем оператор процент, он забирает тот самый остаток, который потом мы удаляем.

-13

Можно сказать, что если брать то же число 300, то результатом выявления остатка будет та самая последняя цифра 0, а после изъятия последней цифры проведём удаление с помощью деления нацело на 10 и таким образом уберём эту последнюю цифру из числа. Перемножение я делаю с помощью сокращённой записи *=, которая заменяет запись result = result*newBufer%10.

-14

После завершения этого цикла перебираются все цифры, перемножаются и отправляются на повторный цикл до тех пор пока число не станет одной цифрой. А в итоге с помощью return мы выводим наш первый счётчик.

-15

А я напоминаю, что я предоставляю услуги по вёрстке сайтов по макету, созданию сайтов на Тильде, Wordpress. Чистая вёрстка по методологии БЭМ, могу на препроцессоре scss. Кому интересно – можете написать вконтакте, найти меня на kwork или же profi ru.