Нужно написать функцию, которая возьмет число, и сложит квадрат каждой его цифры, пока не станет 1, если конечно с этим числом это возможно. Например:
x=23 -> 2^2+3^2=13 -> 1^2+3^2=10 -> 1^2+0^2=1 -> true
x=22 -> 2^2+2^2=8 -> false
Числа могут быть разными, например 0, 1, 12, 123, 1234... Если задано такое число, что в конце станет 1, то пусть возвращает true, а если нет - false. Есть и такие числа, которые бесконечно будут повторять действие, тогда, когда в какой-то части будет повторятся одно и те-же цифры. В током случае тоже пуст возвращает false. (Не использовать prototype.) В моих примерах коды делают это только один раз. Наверно нужно делать по циклу while (Например: while (x!=1){...}), но не знаю как.
код 1
function solution(x) {
let s=0;
x = x.toString().split('');
for (let i=0; i<x.length; i++) {
s += Math.pow(x[i],2);
}
if (s==1) {
return true
}
return false
}
console.log(solution(23));
код 2
function solution(x) {
let y;
y=(x + '').split('')
.map(b => parseInt(b))
.reduce((a,b) => a += b * b, 0);
if (y==1) {
return true
}
return false
}
console.log(solution(23));
У вас в целом правильная логика для решения такой задачи, единственное что если неизвестно заранее количество итераций, которое необходимо совершить, то имеет смысл использовать Рекурсивный подход с указанием условия, когда нужно завершить повторный вызов функции:
function test(value) {
if (value.toString().length == 1) {
if (value == 1) {
console.log(value);
return true;
} else {
console.log(value);
return false;
}
}
value = value.toString().split("");
value = value
.map(e => Number(e) * Number(e))
.reduce((accum, e) => accum + e);
return test(value);
}
test(23);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Товарищи, ниже у меня есть пример, для парсера в Oktell, как мне заставить его читать файлcsv?