Еженедельный вызов 174

Вызов, Мое решение

На этой неделе выполняю только одну задачу. Второе — не более чем копирование и вставка кода с упомянутого сайта, поэтому я не вижу в этом смысла. YMMV.

Задача: Числа Дисариума

Напишите скрипт для генерации первых 19 чисел Дисария.

Дисариево число — это целое число, в котором сумма каждой цифры, возведенная в степень ее положения в числе, равна числу.

Мое решение

Это довольно простое решение. Имеем список (массив в Perl) под названием solutions. Продолжайте итерировать number, пока в списке не останется девятнадцать элементов. Добавьте число в список, если оно является дисарием.

Для определения дисариевых чисел я перебираю каждую цифру, используя функцию enumerate(str(n)). Функция enumerate примерно эквивалентна использованию функции each над массивом в Perl (первое значение — счетчик, второе значение — цифра в данной позиции).

Если сумма равна исходному числу, возвращается True, иначе возвращается False.

Код на Perl аналогичен коду на Python. Код для вычисления суммы немного отличается.

Примеры

$ ./ch-1.py 
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, 1306, 1676, 2427, 2646798

$ ./ch-1.pl 
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 89, 135, 175, 518, 598, 1306, 1676, 2427, 2646798
Вход в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий