


Можно ли что-то оптимизировать и улучшить в моем коде?задача с codewars
Само задание:
Нарциссическое число (или число Армстронга) — это положительное число, представляющее собой сумму собственных цифр, каждая из которых возведена в степень количества цифр в данном основании. В этом Ката мы ограничимся десятичными числами (с основанием 10).
Например, возьмем 153 (3 цифры), что является самовлюбленным:
1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
и 1652 (4 цифры), что не является:
1^4 + 6^4 + 5^4 + 2^4 = 1 + 1296 + 625 + 16 = 1938
Соревнование:
Ваш код должен возвращать истину или ложь (не «истину» и «ложь») в зависимости от того, является ли данное число Нарциссическим числом в базе 10. Это может быть Истина и Ложь на вашем языке, например PHP.
Проверка ошибок текстовых строк или других недопустимых входных данных не требуется, в функцию будут переданы только допустимые положительные ненулевые целые числа.
Мой код:
function narcissistic(value) {
const arr = value.toString(10).split("");
const AmstrongNumber = arr.reduce((acc, number) => {
return acc + number ** arr.length;
}, 0);
if (AmstrongNumber == value) {
return true;
} else {
return false;
}
}
С ним все нормально, все проверки проходит, просто хотл узнать можно ли улучшить и оптимизировать тут что-либо?
function narcissistic(value) {
return [...value.toString()].reduce((acc, current, i, arr) => acc + current**arr.length, 0) == value;
}
Вот мой вариант.
Он не то что бы оптимальнее, он просто короче.
Вообще в CodeWars после выполнения задачи можно видеть ответы других юзеров.
return AmstrongNumber == value
Дальше некуда.
Подай свой код на Шнобелевскую премию.