Liczba ma uproszczoną bazę Goodsteina, jeśli jest zapisana jako
b + b + ... + b + c, 0 < c ≤ b
Uproszczona sekwencja liczb Goodsteina zaczyna się od wpisania liczby w uproszczonej formie Goodsteina base-1, a następnie zamienia wszystkie 1 na 2 i odejmuje 1. Przepisz wynik w postaci uproszczonej base-2, a następnie zamień wszystkie 2 na 3 i odejmij 1 itd., dopóki nie osiągniesz 0.
Wasz program ma przyjąć dodatnią liczbę całkowitą wejściową i wyjściową / wydrukować sekwencję Goodsteina i zakończyć. Twój program powinien obsługiwać liczby mniejsze niż 100, chociaż może nie zakończyć się w rozsądnym czasie.
Na przykład, biorąc pod uwagę 3 jako dane wejściowe, twój program powinien wypisać (prawa strona to tylko wyjaśnienie)
1 + 1 + 1 | 3 = 1 + 1 + 1
2 + 2 + 1 | Change 1's to 2's, then subtract 1. (2 + 2 + 2 - 1 = 2 + 2 + 1)
3 + 3 | 3 + 3 + 1 - 1 = 3 + 3
4 + 3 | 4 + 4 - 1 = 4 + 3
5 + 2 | 5 + 3 - 1 = 5 + 2
6 + 1 | 6 + 2 - 1 = 6 + 1
7 | 7 + 1 - 1 = 7
7 | 8 - 1 = 7
6 | Numbers are now lower than the base, so just keep subtracting 1.
5 |
4 |
3 |
2 |
1 |
0 | End
Odstępy nie mają znaczenia.
Kryterium wygranej:
To jest golf golfowy . Najkrótszy kod wygrywa.
Odpowiedzi:
05AB1E , 19 bajtów
Można również zmienić układ jako
>Å1[ND>:`Ž<)0KD'+ý,
Wypróbuj online!
Wyjaśnienie
źródło
Python 2,
7774 bajtów-3 bajty dzięki Lynn
Wypróbuj online!
Z łatwością osiąga wartość n = 100 (choć wyjście jest zbyt długie, aby tio w pełni pokazało).
źródło
n=input()
b=1
while n:…
n+=n/b-1;b+=1
. 74 bajtywhile
następującego;
. Sądzę, że dzieje się tak, ponieważ jeśli linia jest uruchamiana za pomocąwhile
każdej kolejnej instrukcji (oddzielonej średnikami), jest ona rozważana w jej zakresie czasu, a zachowanie byłoby dwuznaczne lub przynajmniej nieco nieprzejrzystePyth , 29 bajtów
Wypróbuj tutaj!
źródło
Mathematica, 123 bajty
Wypróbuj online!
źródło
Python 3, 155 bajtów
Można to przeformatować na
źródło
1+1+...
i zauważ, że twój program powinien obsłużyć każdą dodatnią liczbę całkowitą.+
.-~x
ma taką samą wartość jakx+1
, ale nie trzeba jej umieszczać w nawiasach, ponieważ unary-
(negacja) i unary~
(negacja bitowa) mają wyższy priorytet niż*
. W twoim przypadku[1]*-~n
jest równa[1]*(n+1)
.JavaScript ES6, 121 znaków
źródło
Perl 5 , 71 bajtów
Wypróbuj online!
źródło