(Це може бути досить класично, але це моя перша публікація тут, тому я ще не готовий до вигадливих речей)
Послідовність Goodstein визначається для вхідного номера наступним чином:
Виберіть початкове число n , нехай b = 2 і повторіть:
- запишіть n у спадковій основі b позначення
- замініть всі ( b ) s на ( b +1) s на n та підрезюме 1
- вивести нове десяткове оцінювання n
- приріст b
Позначення спадкової бази - це декомпозиція числа, де основою є більша кількість, що з'являється. Приклади:
83
в HB3:3^(3+1)+2
226
в HB2:2^(2^(2+1))+2^(2+1)+2
Послідовності Goodstein завжди закінчуються 0 , але вони схильні спочатку отримувати досить великі швидкості, тому не просять вивести повну послідовність.
Завдання:
З огляду на номер введення в будь-якому розумному форматі, ваше завдання - вивести послідовність Goodstein для цього числа принаймні, поки воно не досягне 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)
), щоб уникнути помилок з плаваючою комою.