Sekwencja odwrotnego dodawania (RTA) to sekwencja uzyskana przez dodanie liczby do jej odwrotnej strony i powtórzenie procesu na wyniku. Na przykład
Zatem sekwencja RTA 5 zawiera 10, 11, 22, 44, 88, 176 itd.
RTA pierwiastek z szeregu jest najmniejszą liczbą, która jest albo równa n lub umożliwia podniesienie do n , w swojej sekwencji RTA.
Na przykład 44 znajduje się w sekwencji RTA wynoszącej 5, 10, 11, 13, 22, 31 itd. Z nich 5 jest najmniejszą, a zatem RTAroot (44) = 5.
72 nie jest częścią sekwencji RTA jakiejkolwiek liczby, a zatem jest uważany za swój własny pierwiastek RTA.
Dane wejściowe to dodatnia liczba całkowita w zakresie, który Twój język może oczywiście obsługiwać.
Dane wyjściowe są pierwiastkiem RTA podanej liczby, jak zdefiniowano powyżej.
Przypadki testowe
Input
Output
44
5
72
72
132
3
143
49
1111
1
999
999
Powiązany OEIS: A067031 . Wyjście będzie liczbą z tej sekwencji.
Brachylog ,
2422 bajtów{{
a}}
Wyjaśnienie
przepraszam za dziwne wyjaśnienie, to najlepsze, co mogłem wymyślić
Wypróbuj online!
źródło
{|↰₁}
nich jest proste, ale genialne. Dobra robota!Haskell ,
5957 bajtów-2 bajty dzięki użytkownikowi 1472751 (użycie drugiego
until
zamiast listowego zrozumienia &head
)!Wypróbuj online!
Wyjaśnienie
Spowoduje to ocenę
True
dla dowolnego katalogu głównego RTA:Termin
(+)<*>read.reverse.show
ten jest wersją gry w golfaco dodaje liczbę do siebie odwróconą.
Funkcja ta
until
obowiązuje wielokrotnie,(+)<*>read.reverse.show
dopóki nie przekroczy naszego celu.Podsumowując to wszystko,
until
zaczynając od1
i dodając 1(+1)
, znajdziesz pierwszy RTA-root.Jeśli nie ma właściwego katalogu głównego RTA
n
, ostatecznie docieramy do miejsca, wn
którymuntil
nie stosuje się tej funkcjin<=n
.źródło
until
dla zewnętrznej pętli: TIO05AB1E , 7 bajtów
Korzystanie z nowej wersji 05AB1E (przepisanej w Elixir).
Kod
Wypróbuj online!
Wyjaśnienie
źródło
j
ma szczególne znaczenie w środowisku rekurencyjnym? Wiedziałem tylko o₁
przejściu₆
i oλ
sobie w środowisku rekurencyjnym. Czy jest jeszcze coś więcejj
? EDYCJA: Ach, widzę też coś£
w kodzie źródłowym . Gdzie jest używany?j
zasadniczo sprawdza, czy wartość wejściowa znajduje się w sekwencji.£
upewnia się, że zwraca pierwsze n wartości sekwencji (takie same jakλ<...>}¹£
).Galaretka ,
1211 bajtówDzięki @JonathanAllan za grę w golfa na 1 bajcie!
Wypróbuj online!
Jak to działa
źródło
Rubin,
6657 bajtówWypróbuj online!
Funkcja rekurencyjna, która wielokrotnie „cofa” operację RTA, dopóki nie osiągnie liczby, której nie może wytworzyć, a następnie zwraca minimum.
Zamiast używania
filter
, który jest długi, zamiast tego po prostumap
przekraczam zakres od 1 do liczby. Dla każdego m w tym zakresie, jeśli m + rev (m) jest liczbą, wywołuje funkcję rekurencyjnie na m ; w przeciwnym razie zwraca n . To eliminuje potrzebę afilter
i daje nam podstawowy przypadek f (n) = n za darmo.Najważniejsze to zapisywanie bajtu za pomocą
Integer#digits
:Ostatni byłby o bajt krótszy, ale niestety Ruby analizuje liczby zaczynające się
0
na ósemkowe.źródło
Python 2 , 70 bajtów
Wypróbuj online!
źródło
Pyth , 12 bajtów
Sprawdź pakiet testowy!
Zaskakująco szybki i wydajny. Wszystkie uruchomione jednocześnie testy trwają krócej niż 2 sekundy.
Jak to działa
źródło
05AB1E , 13 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
global_counter
..>.>JavaScript (ES6), 61 bajtów
Wypróbuj online!
Skomentował
źródło
05AB1E ,
211615 bajtów-1 bajt dzięki @Emigna .
Wypróbuj online.
Wyjaśnienie:
źródło
Węgiel drzewny , 33 bajty
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
MATL , 17 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
:!`tG=~yV2&PU*+tG>~*tXzG=A~]f1)
Wypróbuj online!Java 8, 103 bajty
Wypróbuj online.
Wyjaśnienie:
Odwracanie arytmetyczne liczby całkowitej jest o 1 bajt dłuższe ( 104 bajty ):
Wypróbuj online.
źródło
C (gcc) ,
12010099 bajtówWypróbuj online!
Biorąc pod uwagę dane wejściowe
i
, sprawdza każdą liczbę całkowitą odi
0 do sekwencji zawierająceji
.i
jest wartością wejściowąo
to wartość wyjściowa (minimalny znaleziony dotychczas root)a
jest sprawdzaną bieżącą liczbą całkowitąb
jest bieżącym elementema
sekwencjic
id
służą do dodawaniab
na odwrocieźródło
-DL=for
zaoszczędziłaby Ci 2 bajty.i=o;
jeśli używasz-O0
, oszczędzając 5 bajtów.Japt ,
161511 bajtówSpróbuj
źródło
Physica , 57 bajtów
Podziękowania za tę metodę należą do Klamki .
Wypróbuj online!
źródło
C (gcc) , 89 bajtów
Sprawdzam każdą sekwencję w [1, n ) aż do uzyskania dopasowania; zero ma specjalne znaczenie, ponieważ nie kończy się.
Wypróbuj online!
źródło