Wyzwanie
Tutaj w PPCG, z pewnością lubimy nasze sekwencje, więc tutaj jest kolejna zabawa .
Zdefiniujmy a(n)
jako najmniejszą nieujemną liczbę całkowitą, X
która nie jest równa żadnej a(k)
( 0 < k < n
) a(n-1)
i X
nie dzielimy żadnych cyfr dziesiętnych.a(0) = 0
Biorąc pod uwagę wejście n > 0
, wyjście takie a(n)
.
Na przykład, dla danych wejściowych n = 13
mamy a(13) = 20
, ponieważ a(12) = 11
i 20
jest najmniejszą nieujemną liczbą całkowitą, której jeszcze nie widzieliśmy, która nie dzieli żadnych cyfr dziesiętnych 11
.
Sekwencja
Oto pierwsze 20 warunków na początek. Jest to sekwencja A067581 w OEIS.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 22, 11, 20, 13, 24, 15, 23, 14, 25
Zasady
- Można założyć, że dane wejściowe i wyjściowe pasują do rodzimej liczby całkowitej twojego języka.
- Dane wejściowe i wyjściowe można podawać w dowolnym dogodnym formacie .
- Możesz wybrać albo indeks 0, jak tu jestem w moich przykładach, albo indeks 1 dla twojego zgłoszenia. Proszę podać, co robisz.
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Jeśli to możliwe, dołącz link do internetowego środowiska testowego, aby inni mogli wypróbować Twój kod!
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
n > 1
(lubn ≥ 2
) jako dane wejściowe? (1-indeksowanie)Odpowiedzi:
Python 2 , 85 bajtów
-1 bajt dzięki Dead Possum
Wypróbuj online!
źródło
n=0,
dla -1 bajtu?Japt , 18 bajtów
Przetestuj online! Właśnie dodałem
g
użytą tutaj funkcję, ale zamierzałem ją dodać od dłuższego czasu (i to zepchnęło mnie na brzeg, ponieważ moje nierozwiązanieg
miało około 35 bajtów).Wyjaśnienie
źródło
Pyth , 20 bajtów
Wypróbuj online! lub Wypróbuj zestaw testowy.
źródło
Haskell, 79 bajtów
Kod jest strasznie nieefektywny. Aby obliczyć większe wartości, tj.> 12, dodaj
f x|x<11=x
między dwiema liniami (zaimplementowaneg
w łączu TIO).Wypróbuj online!
źródło
JavaScript (ES6), 82 bajty
0-indeksowane.
Próbny
Pokaż fragment kodu
źródło
Łuska , 18 bajtów
Rozwiązanie 1-indeksowane. Wypróbuj online!
Edycja: naprawiono błąd dla +1 bajtu.
Wyjaśnienie
Wbudowana funkcja iteracji Husky
¡
ma wiele znaczeń. Używam tutaj „konstruuj nieskończoną listę, wielokrotnie dodając nowe elementy obliczone z istniejących”. Druga linia to funkcja pomocnicza, która oblicza nowy element:Pierwszy wiersz to główna funkcja:
źródło
Haskell, 78 bajtów
Byłoby jeszcze bardziej efektywne, gdyby drugim argumentem
!
nie była lista liczb widzialnych, ale liczb niewidocznych. Ale nie mogę tego zrobić bez użycia większej ilości bajtów.Wypróbuj online!
źródło
Mathematica 115 bajtów
Jest jeszcze miejsce na golfa - i może skorzystaj z rekurencji (przyspieszając to).
Oryginalny pełny kod, z tym samym podstawowym pomysłem:
źródło