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