Wiele języków programowania konstruuje duże liczby całkowite poprzez „łączenie” cyfry z końcem istniejącej liczby. Na przykład Labirynt lub Adapt . Przez połączenie cyfry do końca rozumiem, że jeśli istniejąca liczba to , a cyfra to , to liczba wynikowa to .
Skonstruowana liczba to liczba, którą można zbudować w ten sposób za pomocą wielokrotności liczb jednocyfrowych: AKA element w jednej z tych 9 sekwencji:
Aby podać przykład budowy sekwencji, oto jak zbudowana jest sekwencja dla :
and included to demonstrate when . A lot of digits dotted out for space.
It may still not be clear how these sequences are constructed, so here are two different ways to understand them:
Każda sekwencja zaczyna się od pojedynczej cyfry. Następny termin można znaleźć, biorąc następną wielokrotność tej cyfry, mnożąc poprzedni termin przez i dodając wielokrotność. Sekwencyjnie:
gdzie jest pojedynczą cyfrą (od do )
Each of the elements at any point in the sequence (take for instance) are the multiples of from to , where is constructed by
So the first values are , the second are , the third , etc.
Twoim zadaniem jest pobranie skonstruowanej liczby jako danych wejściowych i wyprowadzenie początkowej cyfry użytej do jej skonstruowania. Możesz założyć, że dane wejściowe będą zawsze liczbą konstruowaną i będą większe niż . Może być pojedynczą cyfrą, która odwzorowuje się z powrotem na sobie.
Możesz przyjmować dane wejściowe w dowolny rozsądny sposób, w tym jako listę cyfr, ciąg znaków itp. Dopuszczalne (choć nie zalecane) jest wprowadzanie danych jednostronnie lub w dowolnej innej wybranej przez ciebie bazie.
To jest golf golfowy, więc wygrywa najkrótszy kod!
Przypadki testowe
u_n => a
37035 => 3
6172839506165 => 5
5 => 5
246913580244 => 2
987654312 => 8
61728395061720 => 5
1111104 => 9
11111103 => 9
111111102 => 9
2469134 => 2
98760 => 8
8641975308641962 => 7
lub jako dwie listy:
[37035, 6172839506165, 5, 246913580244, 987654312, 61728395061720, 1111104, 11111103, 111111102, 2469134, 98760, 8641975308641962]
[3, 5, 5, 2, 8, 5, 9, 9, 9, 2, 8, 7]
Kiedy opublikowałem to wyzwanie, nie zdawałem sobie sprawy, że można go uprościć dzięki metodzie użytej w odpowiedzi Grimy'ego , dlatego bardzo interesują mnie odpowiedzi, które mają bardziej matematyczne podejście do rozwiązania, niż „cyfra” trick (oczywiście wszystkie poprawne odpowiedzi są jednakowo ważne, tylko to, co chciałbym zobaczyć).
Odpowiedzi:
05AB1E ,
754 bajtówWypróbuj online!
źródło
a * (((10**n - 1) / 9 - n) / 9)
. Pomnóż to przez 9 i dodaja*n
, a otrzymasza * ((10**n - 1) / 9)
, czyli cyfrę, powtarzaną n razy. Okazuje się, że dodanie 9 zamiasta*n
działa dla n = 1, a dla większego n stała różnica jest nieznaczna obok wzrostu wykładniczego.MathGolf , 6 bajtów
Wypróbuj online!
Niestety
head
w MathGolf nie ma żadnej operacji, więc muszę zrobić,▒├Þ
aby przekonwertować na ciąg, pop od lewej i odrzucić wszystkie oprócz wierzchu stosu.źródło
Galaretka , 5 bajtów
Wypróbuj online!
Korzystanie z podejścia Grimy'ego .
źródło
Stax , 5 bajtów
Uruchom i debuguj
źródło
Japt
-g
,765 bajtów-1 bajt dzięki Shaggy
Pobiera dane wejściowe jako ciąg
Wypróbuj | Przetestuj wiele wejść
źródło
Węgiel drzewny , 7 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. @ Metoda Grimy'ego oczywiście. Oto 27-bajtowe podejście matematyczne:
Wypróbuj online! Link jest do pełnej wersji kodu. Awarie przy nieprawidłowych danych wejściowych. Wyjaśnienie:
Wprowadź skonstruowaną liczbę.
Zinterpretuj listę jako liczbę w bazie 10, pomnóż ją przez wszystkie liczby od
0
do9
i sprawdź, czy pojawi się skonstruowana liczba.Pchnij długość listy do siebie. Lista staje się zatem formą
[0, 1, 2, ..., n]
.Odtwórz skonstruowane liczby, ale tym razem znajdź i wyślij indeks, pod którym pojawił się numer wejściowy.
źródło
Labirynt ,
28 2220 bajtówStosuje metodę cyfrową opisaną przez Grimy'ego przez wielokrotne dzielenie liczb całkowitych przez dziesięć, aż do znalezienia zera.
Wypróbuj online!
źródło
Biała spacja , 108 bajtów
Dodane litery
S
(spacja),T
(tab) iN
(nowa linia) tylko jako wyróżnienia.[..._some_action]
dodano tylko jako wyjaśnienie.Port odpowiedzi 05AB1E @Grimy , z wyjątkiem tego, że nie mam wbudowanego, aby uzyskać pierwszą cyfrę. ;)
Wypróbuj online (tylko z surowymi spacjami, tabulatorami i nowymi wierszami).
Objaśnienie w pseudo-kodzie:
źródło
Python 3 , 22 bajty
Wypróbuj online!
Port Grimy „s 05AB1E odpowiedź
Python 3 , 74 bajty
Wypróbuj online!
Wyjaśnienie
Funkcja rekurencyjna. Powtarza sekwencję dla każdej cyfry
l
, zaczynając od1
. Jeśli wartość wejściowai
jest równa bieżącej iteracjij
,l
zwracana jest odpowiednia cyfra . W przeciwnym razie, jeśli bieżąca wartośćj
w sekwencji przekroczy wartość wejściowąi
, zwiększy cyfręl
i rozpocznie od nowa. Argumentk
służy do zwiększania mnożnika.źródło
JavaScript (ES6),
1615 bajtówDzięki @Grimy za zniesienie 32-bitowego ograniczenia, które miałem w poprzedniej wersji.
Używanie magicznej inkantacji Grimy'ego . Pobiera dane wejściowe jako ciąg.
Wypróbuj online!
JavaScript (ES6), 53 bajty
Naiwne brutalne podejście.
Wypróbuj online!
źródło
-~n*9
może byćn*9+9
, co jest tym samym bajtem, ale powinienem pozbyć się ograniczenia 32-bitowego, jeśli dobrze zrozumiałem.14808
n=>n
działa dla wszystkich danych wejściowych.Java 8, 23 bajty
Port odpowiedzi @ABrimy 05AB1E , więc pamiętajcie o jego głosowaniu!
Wypróbuj online.
Ale ponieważ trochę mi przykro z powodu @cairdCoinheringaahing , oto podejście brutalnej siły z nieco większym budżetem ( 83 bajty ):
Wypróbuj online.
Wyjaśnienie:
źródło
PHP , 20 bajtów
Wypróbuj online!
Kolejny port odpowiedzi Grimy'ego!
źródło
Galaretka , 8 bajtów
Wypróbuj online!
Pełny program, który pobiera liczbę całkowitą i drukuje cyfrę początkową. Nie używa sprytnej metody Grimy'ego! Strasznie nieefektywny przy większych nakładach. Następująca wersja obsługuje wszystkie przypadki testowe, ale jest bajtem dłuższym:
Galaretka , 9 bajtów
Wypróbuj online!
źródło
Hy , 44 bajty
Wykorzystuje metodę Grimy'ego
Wypróbuj online!
źródło
Beczka
-rr
, 4 bajtyWypróbuj online!
Oczywiście stosuje to samo podejście, co odpowiedź 05AB1E. Używa również nowego
-rr
flagi (odwróć i drukuj raw).Transpozycje do:
źródło
Strzyżyk , 30 bajtów
Tylko port większości odpowiedzi.
Wypróbuj online!
źródło