Описание

Нарциссическое число — это положительное число, представляющее собой сумму его собственных цифр, каждая из которых возведена в степень количества цифр в данном основании. В этом Ката мы ограничимся десятичными числами (с основанием 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

Соревнование

Ваш код должен возвращать true или false (не «true» и «false») в зависимости от того, является ли данное число нарциссическим числом в базе 10. Это может быть True и False на вашем языке, например. PHP.

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

Мой подход (javascript)

Шаг 1. Преобразуйте входное значение из числа в массив

Строка кода Array.from(String(value), Number); преобразует наше число в строку (String(value)), берет каждый символ этой строки, преобразует его в число (Number) и помещает эти числа в новый массив (Array.from()).

Шаг 2. Создайте переменную "Итого"

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

Шаг 3. Перебор массива в цикле

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

Шаг 4. Возведите каждую цифру в степень количества цифр

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

(Примечание: поскольку я не включил ключевые слова let, var или const при объявлении моей переменной, теперь она существует в глобальной области видимости, и я могу получить к ней доступ вне блока цикла for. Вы можете экспериментировать с разными способами. чтобы сделать эту переменную доступной вне функции.)

Шаг 5. Помните переменную total?

Каждый раз, когда наш цикл for вычисляет значение для powered , мы хотим добавить это значение к значению нашей ранее объявленной переменной total .

Шаг 6. Сравните общую сумму с введенным значением

Теперь, когда мы перебрали каждую цифру, возведя каждую цифру в степень общего количества цифр, и сложили каждое из этих значений вместе для получения общей суммы, нам нужно сравнить total с value, которое изначально было передано через нашу narcissistic(). функция.

Создайте оператор if, который сравнивает эти два значения. Если они равны друг другу, верните логическое значение true . Если это не так, верните логическое значение false .

Решено!

Мы написали нашу функцию narcissistic(), и это Ката завершено!

Есть более простой способ решить эту проблему? Нужны какие-либо разъяснения? Дай мне знать в комментариях!

Окончательный код: