(To może być dość klasyczny, ale to mój pierwszy post tutaj, więc nie jestem jeszcze gotowy na fantazyjne rzeczy)
Sekwencja Goodstein jest zdefiniowany numer wejścia w następujący sposób:
Wybierz liczbę początkową n , niech b = 2 i powtórz:
- napisz nw heriditarnej notacji b
- zastąpić wszystkich ( b ) s do ( b + 1) jest w n i odejmowanie 1
- wyprowadza nową ocenę dziesiętną n
- przyrost b
Notacja dziedziczna Podstawa to rozkład liczby, w której podstawą jest większa liczba, która się pojawi. Przykłady:
83
w HB3:3^(3+1)+2
226
w HB2:2^(2^(2+1))+2^(2+1)+2
Sekwencje Goodsteina zawsze kończą się na 0 , ale zwykle stają się dość duże dość szybko, więc nie jest wymagane podanie pełnej sekwencji.
Zadanie:
Biorąc pod uwagę liczbę wejściową w dowolnym rozsądnym formacie, Twoim zadaniem jest wyprowadzenie sekwencji Goodsteina dla tej liczby przynajmniej do osiągnięcia 10 ^ 25 lub 0
Przykłady:
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
Detale:
- Numer wejściowy może być tablicą, łańcuchem, liczbą całkowitą, o ile jest podana w postaci dziesiętnej
- Dane wyjściowe podlegają tej samej zasadzie
- Rozdzielenie terminów w danych wyjściowych może być spacjami, znakami nowej linii lub dowolną rozsądną separacją
- Gdy tylko sekwencja stanie się większa niż 10 ^ 25, twój program może wyjść normalnie, zgłosić błąd / wyjątek lub kontynuować (bez ograniczeń)
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź (w bajtach)
- Oczywiście standardowe luki są zabronione
- Python nie działający przykład działania tutaj
int(q/base.b), q%base.b
należy q//base.b, q%base.b
(lub po prostu divmod(q, base.b)
), aby uniknąć błędów zmiennoprzecinkowych.