Oto interesująca sekwencja odkryta przez Paula Loomisa, matematyka z Bloomsburg University. Z jego strony w tej sekwencji:
Zdefiniuj za
f(n) = f(n-1) + (the product of the nonzero digits of f(n-1))
f(0) = x
pomocą x
dowolnej dodatniej liczby całkowitej zapisanej w bazie 10.
Tak więc, zaczynając od f(0)=1
, otrzymujesz następującą sekwencję
1, 2, 4, 8, 16, 22, 26, 38, 62, 74, 102, 104, ...
Do tej pory tak standardowe. Interesująca właściwość wchodzi w grę, gdy weźmiesz inną liczbę całkowitą jako punkt początkowy, ostatecznie sekwencja zbiegnie się w punkt wzdłuż powyższej x=1
sekwencji. Na przykład, zaczynając od x=3
wydajności
3, 6, 12, 14, 18, 26, 38, 62, 74, 102, ...
Oto kilka kolejnych sekwencji, z których każda pokazana jest tylko do osiągnięcia 102
:
5, 10, 11, 12, 14, 18, 26, 38, 62, 74, 102, ...
7, 14, 18, 26, 38, 62, 74, 102, ...
9, 18, 26, 38, 62, 74, 102, ...
13, 16, 22, 26, 38, 62, 74, 102, ...
15, 20, 22, 26, 38, 62, 74, 102, ...
17, 24, 32, 38, 62, 74, 102, ...
19, 28, 44, 60, 66, 102, ...
Przypuszczał i udowodnił empirycznie x=1,000,000
, że ta właściwość (tj. Że wszystkie liczby wejściowe są zbieżne w tej samej sekwencji) jest prawdziwa.
Wyzwanie
Biorąc pod uwagę dodatnią liczbę całkowitą wejściową, wypisz liczbę 0 < x < 1,000,000
, w której f(x)
sekwencja zbiega się z f(1)
sekwencją. Na przykład x=5
byłoby to 26
, ponieważ jest to pierwsza wspólna liczba dla obu sekwencji.
x output
1 1
5 26
19 102
63 150056
Zasady
- Jeśli dotyczy, możesz założyć, że wejście / wyjście będzie pasować do rodzimego typu Integer w twoim języku.
- Dane wejściowe i wyjściowe można podać dowolną dogodną metodą .
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- 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).
źródło
Galaretka ,
1814 bajtówDane wejściowe to tablica singletonów.
Wypróbuj online!
Jak to działa
źródło
Python 2 ,
1119593 bajtówUżywając rozpakowywania
replace(*'01')
jak w @Rod odpowiedz-18 bajtów dzięki @Lynn
Wypróbuj online!
źródło
while cmp(*l)
również!Haskell , 65 bajtów
Wypróbuj online!
źródło
Python 2 , 78 bajtów
Wypróbuj online!
źródło
Łuska , 13 bajtów
Pobiera dane wejściowe jako listę singletonów.
Wypróbuj online!
Wyjaśnienie
źródło
Python 3 ,
126125 bajtówWypróbuj online!
Weź dane jako ciąg
źródło
Java (JDK 10) , 99 bajtów
Wypróbuj online!
Przeważnie jest to iteracyjny port odpowiedzi JavaScript Arnaulda , więc go oceń!
źródło
Galaretka , 23 bajty
Wypróbuj online!
źródło
J , 50 bajtów
milcząca definicja funkcji stylu
jeśli argument (powiedzmy 63) został wklejony do wyrażenia REPL, może to być 45 np
,&1
dołącz 1, aby wygenerować sekwencję wyszukiwania oraz sekwencję argumentów^:(<453)"0
iteruje każdy do momentu osiągnięcia 1 miliona w sekwencji 1+ [: */@(*#]) (#~10)&#:
widelec dodaje do haka, który tworzy iloczyn cyfr(e.~ # ])/
używa powtórz element, jeśli istnieje, aby uzyskać przecięcie list{.
zwraca tylko pierwszą wspólną wartośćWypróbuj online!
źródło
R ,
11086 bajtówTIO
poprzednia wersja 110:
TIO
źródło