Pewnego dnia wymyśliłem serię liczb i postanowiłem sprawdzić, jaki to numer OEIS. Ku mojemu zaskoczeniu, sekwencja nie pojawiła się w bazie danych OEIS, więc postanowiłem nazwać tę sekwencję po sobie (zauważ, że ktoś, kto jest o wiele mądrzejszy ode mnie, prawdopodobnie już to wymyślił i jeśli ktoś znajdzie faktyczna nazwa tej sekwencji, proszę o komentarz, a ja zmienię tytuł pytania). Ponieważ nigdzie nie mogłem znaleźć sekwencji, postanowiłem ją nazwać po sobie, stąd „Gryphon Numbers”. EDYCJA: Dzięki @Surb za zwrócenie mojej uwagi na fakt, że ta sekwencja jest równa sekwencji OEIS A053696 - 1.
Numer gryfa szereg postaci , gdzie zarówno jak i są liczbami całkowitymi większymi lub równymi dwa, a sekwencja Gryphona jest zbiorem wszystkich liczb Gryphona w porządku rosnącym. Jeśli istnieje wiele sposobów tworzenia liczby Gryfa (pierwszy przykład to , czyli i ), liczba jest liczona tylko raz w sekwencji. Pierwsze kilka liczb Gryfa to: .
Twoje zadanie:
Napisać program lub funkcji, które otrzymuje się całkowitą na wejściu i na wyjściu z th liczby Gryphon.
Wkład:
Liczba całkowita od 0 do 10000 (włącznie). Możesz traktować sekwencję jako indeksowaną 0 lub 1 indeksowaną, w zależności od tego, co wolisz. Proszę podać, jakiego systemu indeksowania używasz w swojej odpowiedzi, aby uniknąć nieporozumień.
Wydajność:
Numer Gryphona odpowiadający wejściu.
Przypadki testowe:
Należy pamiętać, że przy założeniu, że sekwencja ma indeks 0. Jeśli twój program zakłada sekwencję 1-indeksową, nie zapomnij zwiększyć wszystkich liczb wejściowych.
Input: Output:
0 ---> 6
3 ---> 20
4 ---> 30
10 ---> 84
99 ---> 4692
9999 --> 87525380
Punktacja:
To jest golf golfowy , więc wygrywa najniższy wynik w bajtach.
Odpowiedzi:
Galaretka , 9 bajtów
Pełny program, który odczytuje liczbę całkowitą (indeksowaną 1) ze STDIN i wypisuje wynik.
Wypróbuj online!
W jaki sposób?
Liczba Gryphona to liczba, która jest wyrażana w bazie mniej niż sama, tak że wszystkie cyfry są jedynymi, z wyjątkiem najmniej znaczących, czyli zerowych. Na przykład:
Ten program pobiera
n
, a następnie uruchamia ov=0
i testuje tę właściwość i zwiększav
ją, aż znajdzien
takie liczby, a następnie wyprowadza ostateczną.Aby przetestować−1 . (Uwaga, że
b
numer bazowy , odejmuje jeden od każdej cyfry, konwertuje z bazyv
, a następnie sprawdza, czy wynikiem jestb
jest mniejsza niżv
)źródło
MATL ,
1613 bajtówNa podstawie 1.
Wypróbuj online!
Wyjaśnienie
Rozważ dane wejściowe
n = 3
jako przykład.Macierz uzyskana w kroku (*) zawiera prawdopodobnie powtarzające się liczby Gryphona. W szczególności zawiera
n
wyraźne liczby Gryphon w pierwszym rzędzie. Niekoniecznie są ton
najmniejsze liczby Gryfa. Jednak dolny lewy wpis2+2^+···+2^n
przekracza górny prawy wpisn+n^2
, a zatem wszystkie liczby w ostatnim rzędzie przekraczają liczby w pierwszym rzędzie. Oznacza to, że rozszerzenie macierzy w prawo lub w dół nie przyczyni się do uzyskania liczby Gryphonów niższej niż najniższen
liczby w macierzy. Dlatego macierz ma zagwarantowane, że zawieran
najmniejsze liczby Gryphona. W rezultacie rozwiązaniem jest jegon
najniższy unikalny element.źródło
Haskell , 53 bajty
Wypróbuj online!
Generujemy nieskończoną listę wszystkichn ≥6 tak że wyszukiwanie metodą brutalnej siły pokazuje, że tak jest.
Odpowiedzią jest funkcja indeksu (indeksowana od zera) na tę listę, oznaczona w Haskell jako
(list!!)
.Dlaczego jest
a^y+n==n*a+a
poprawny?Ze wzoru na sumowanie postępu geometrycznego :
a^y+n=n*a+a
Czy szukanie jest
n
wystarczające?Jeślia>n a≥n+1 ay+n>a2≥(n+1)a=na+a ay+n≠na+a a>n
Podobnie: Jeśliy>n , a następnie Y +ay+n>an=an−1a≥2n−1a>∗(n+1)a=na+a, ay+n≠na+a
źródło
Python 3.8 (wersja wstępna) ,
9892897871 bajtówWypróbuj online!
0-indeksowane. Należy tu zastosować dzielenie liczb całkowitych, ponieważ f (10000) przelewa się.
-6 bajtów dzięki Jonathanowi Allanowi
-3 bajty dzięki ArBo. Prawie zrobiłem, jak sam sugerował, ale próbowałem użyć,
{*(...)}
co i tak nie oszczędzało miejsca-11 bajtów dzięki Mathmandan
-7 bajtów dzięki ArBo
Matematyczny dowód ważności
Wykorzystanie indeksowania 0 dla tego dowodu, mimo że konwencja matematyczna ma indeks 1.
źródło
f=
jest niepotrzebne ilambda n,r=range:
pozwoli zaoszczędzić jeszcze 4 ( tak )set()
i zastąpić go kompletnym zrozumieniem, aby dostać się do 89f=
link z linku TIO, umieszczając go w nagłówku, tak jak w TIO mojego 89-bajtowegoJ ,
3532 bajtów-3 bajty dzięki FrownyFrog
Wypróbuj online!
Wyjaśnienie jest takie samo jak oryginału. Wystarczy użyć jawnej formy, aby zaoszczędzić bajty, usuwając wielokrotność
@
.oryginalna odpowiedź, milcząca, z wyjaśnieniem: 35 bajtów
Wypróbuj online!
Podobnie do podejścia Luisa Mendo, tworzymy „tabelę mocy” (jak tabelę czasu) z górnym rzędem
2 3 ... n
i lewą kolumną, w1 2 ... n
wyniku czego:^~/ >:
tworzy tabelę i1+i.@+&2
tworzy1... n
sekwencje, i dodajemy 2 (+&2
) do danych wejściowych, aby upewnić się, że zawsze mamy wystarczającą liczbę elementów, aby utworzyć tabelę nawet dla danych wejściowych 0 lub 1.Po powyższej tabeli rozwiązanie jest banalne. Po prostu skanujemy sumowanie wierszy
+/\
, a następnie usuwamy pierwszy wiersz, spłaszczamy, wybieramy unikatowe i sortujemy/:~@~.@,@}.
. Na koniec{
wykorzystuje oryginalne dane wejściowe do indeksowania tego wyniku, tworząc odpowiedź.źródło
Gaia , 18 bajtów
Wypróbuj online!
Indeks oparty na 1.
To dość smutna odpowiedź z długim nosem:
)┅:
prawdopodobnie żałuje, że nie można dalej grać w golfa.Kopiuje algorytm podany w odpowiedzi Luisa Mendo
źródło
R ,
6562 bajtów-1 bajt dzięki Giuseppe.
Wypróbuj online!
1-indeksowany.
Generuje macierz wszystkich wartości postaci ı bierze skumulowaną sumę, usuwa się z pierwszego rzędu (0s) oraz drugi rząd (pozycje odpowiadające Xai x=1
Zauważ, że
sort(unique(...))
to nie zadziałałoby, ponieważunique
dałoby unikalne wiersze macierzy, a nie unikatowe wpisy. Używanieunique(sort(...))
działa, ponieważsort
konwertuje na wektor.źródło
t
idiffinv
ma 64 bajtydiffinv
. Grałem w golfa o kolejne 2 bajty, zastępując[-1:-2,]
je[3:n,]
.JavaScript (ES7), 76 bajtów
1-indeksowany.
Wypróbuj online!
JavaScript (ES7), 89 bajtów
1-indeksowany.
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 51 bajtów
Wypróbuj online!
1-indeksowany
-8 bajtów od @attinat
źródło
Węgiel drzewny , 36 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. 1-indeksowany. Wykorzystuje algorytm Luisa Mendo. Wyjaśnienie:
Wydrukuj najniższy pozostały numer Gryphona.
źródło
Japt , 23 bajty
Drogi Jebusie! Albo ja naprawdę zapomniałem, jak grać w golfa, albo alkohol w końcu zbiera żniwo!
Nie jest to bezpośredni przykład rozwiązania Jonathana, ale bardzo zainspirowany jego obserwacją.
Spróbuj
źródło
05AB1E , 12 bajtów
0-indeksowane
Wyjaśnienie:
źródło