(Это может быть довольно классическим, но это мой первый пост здесь, так что я еще не готов к модным вещам)
Последовательность Гудштейна для входного номера определяется следующим образом:
Выберите начальное число n , пусть b = 2 и повторите:
- записи п в heriditary базовой б обозначениях
- заменить все ( b ) s на ( b +1) s в n и вычесть 1
- вывести новую десятичную оценку n
- приращение б
Обозначение наследственной базы - это разложение числа, в котором основание - это большее число. Примеры:
83
в HB3:3^(3+1)+2
226
в HB2:2^(2^(2+1))+2^(2+1)+2
Последовательности Гудштейна всегда заканчиваются на 0 , но сначала они имеют тенденцию довольно быстро увеличиваться , поэтому не требуется выводить полную последовательность.
Задача:
Учитывая введенное число в любом приемлемом формате, ваша задача состоит в том, чтобы вывести последовательность Гудштейна для этого числа, по крайней мере, пока оно не достигнет 10 ^ 25 или 0
Примеры:
Input: 3
Output: 3, 3, 3, 2, 1, 0
Input: 13
Output: 13, 108, 1279, 16092, 280711, 5765998, 134219479, 3486786855, 100000003325, 3138428381103, 106993205384715, 3937376385706415, 155568095557821073, 6568408355712901455, 295147905179352838943, 14063084452067725006646, 708235345355337676376131, 37589973457545958193377292
Input: 38
Output: 38, 22876792454990
Детали:
- Входное число может быть массивом, строкой, целым числом, если оно находится в десятичной базе
- Выход следует по тому же правилу
- Разделение терминов в выводе может быть пробелами, новыми строками или любым разумным разделением
- Как только последовательность становится больше 10 ^ 25, ваша программа может нормально завершиться, выдать ошибку / исключение или продолжить (без ограничений)
- Это код-гольф , поэтому выигрывает самый короткий ответ (в байтах)
- Конечно, стандартные лазейки запрещены
- Python ungolfed рабочий пример здесь
int(q/base.b), q%base.b
нужно q//base.b, q%base.b
(или просто divmod(q, base.b)
) избегать ошибок с плавающей точкой.