Sekwencja Sixers to nazwa, która może być udzielona do sekwencji A087409 . Dowiedziałem się o tej sekwencji w filmie Numberphile i można ją zbudować w następujący sposób:
Najpierw weź wielokrotności 6, zapisane w bazie 10:
6, 12, 18, 24, 30, 36, ...
Następnie połącz liczby w strumień cyfr:
61218243036...
Na koniec zgrupuj strumień w pary i zinterpretuj każdy jako liczbę całkowitą:
61, 21, 82, 43, 3, ...
Gdy grupujemy liczby w pary, maksymalna liczba w sekwencji będzie wynosić 99, i okazuje się, że wszystkie nieujemne liczby całkowite mniejsze niż 100 są reprezentowane w sekwencji. Wyzwanie polega na znalezieniu indeksu pierwszego wystąpienia liczby w sekwencji Sixersa.
Wejście
Liczba całkowita w zakresie [0-99]
. Nie musisz uwzględniać liczb spoza tego zakresu, a twoje rozwiązanie może mieć dowolne zachowanie, jeśli takie dane zostaną podane.
Wynik
Indeks pierwszego wystąpienia liczby wejściowej w sekwencji Sixersa. Może to być indeks 0 lub 1; proszę powiedzieć, którego używasz w swojej odpowiedzi.
Zasady
- Procedura generowania sekwencji opisana we wstępie służy wyłącznie do celów ilustracyjnych, możesz użyć dowolnej metody, o ile wyniki są takie same.
- Możesz przesyłać pełne programy lub funkcje.
- Wszelkie rozsądne metody wprowadzania i wyprowadzania są dozwolone.
- Standardowe luki są niedozwolone.
- Zalecane są linki do przetestowania kodu online!
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w każdym języku!
Przypadki testowe
Oto lista wszystkich wejść i wyjść w formacie input, 0-indexed output, 1-indexed output
.
0 241 242
1 21 22
2 16 17
3 4 5
4 96 97
5 126 127
6 9 10
7 171 172
8 201 202
9 14 15
10 17 18
11 277 278
12 20 21
13 23 24
14 19 20
15 29 30
16 32 33
17 297 298
18 35 36
19 38 39
20 41 42
21 1 2
22 46 47
23 69 70
24 6 7
25 53 54
26 22 23
27 11 12
28 62 63
29 219 220
30 65 66
31 68 69
32 71 72
33 74 75
34 49 50
35 357 358
36 80 81
37 83 84
38 25 26
39 89 90
40 92 93
41 27 28
42 42 43
43 3 4
44 101 102
45 104 105
46 8 9
47 177 178
48 110 111
49 13 14
50 28 29
51 119 120
52 122 123
53 417 418
54 79 80
55 128 129
56 131 132
57 134 135
58 55 56
59 437 438
60 140 141
61 0 1
62 31 32
63 75 76
64 5 6
65 120 121
66 82 83
67 10 11
68 161 162
69 164 165
70 58 59
71 477 478
72 170 171
73 173 174
74 34 35
75 179 180
76 182 183
77 497 498
78 85 86
79 188 189
80 191 192
81 18 19
82 2 3
83 78 79
84 93 94
85 7 8
86 37 38
87 168 169
88 12 13
89 228 229
90 88 89
91 218 219
92 221 222
93 224 225
94 64 65
95 557 558
96 230 231
97 233 234
98 40 41
99 239 240
6, 2*6, 3*6,..., 325*6
jest wystarczające do wygenerowania wszystkich możliwych wartości00
01
02
Odpowiedzi:
JavaScript (ES6),
71 6555 bajtówWyjście jest indeksowane na 0.
Wypróbuj online!
W jaki sposób?
Korzystając z funkcji rekurencyjnej, albo „konsumujemy” pierwsze 2 znaki ciągu połączonych wielokrotności6 , albo dodajemy nowe znaki, jeśli mamy mniej niż 2 z nich.
Przykład dlan=3 :
Skomentował
źródło
Python 2 ,
9392858381686559 bajtówWypróbuj online!
źródło
f=lambda n,s='612',i=3:n-int(s[:2])and f(n,s[2:]+`i*6`,i+1)or i-2
f=lambda n,s='612',i=18:n-int(s[:2])and-~f(n,s[2:]+`i`,i+6)
(indeksowane 0).Perl 6 , 31 bajtów
Wypróbuj online!
Wykorzystuje sekwencję 1-indeksowaną.
Wyjaśnienie:
źródło
Haskell ,
82 ... 65 5854 bajtówWypróbuj online!
źródło
05AB1E , 9 bajtów
0-indeksowane. Akceptuje jako dane wejściowe jedną liczbę całkowitą lub listę liczb całkowitych.
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
100
,"100"
i100.0
są takie same dla większości funkcji, takich jak równe kontrole i tym podobne. Nadal istnieją funkcje rzutowania na int i rzutowania na ciąg w 05AB1E dla niektórych funkcji, takich jak sortowanie (sortowanie numeryczne vs leksykograficzne) lub do usuwania cyfr dziesiętnych po przecinku z liczby zmiennoprzecinkowej podczas rzutowania na int, ale nie są one używane tak często .Węgiel drzewny , 12 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. 0-indeksowane. Wyjaśnienie:
źródło
J ,
2926 bajtów-3 bajty dzięki FrownyFrog!
Wypróbuj online!
W oparciu o 0
źródło
i.~_2(".\;)6<@":@*1+i.@325
APL (Dyalog Unicode) , 26 bajtów
Wypróbuj online! - Testy dla wszystkich ważnych danych wejściowych.
W jaki sposób:
źródło
⍴
ale APL mnie przeraża ...⍴
to zmiana APL-a. Jeśli więc chcesz przekształcić spłaszczony wektor, po prostu musisz to zrobić<new shape vector> ⍴ <vector to reshape>
Python 3 ,
8781 bajtów:wejście całkowite, wyjście 0-indeksowane.
Wypróbuj online!
-6 bajtów, dzięki @TFeld.
źródło
Wolfram Language (Mathematica) , 74 bajty
Wypróbuj online!
2 bajty zapisane z @Expired Data
źródło
Brachylog , 14 bajtów
Wypróbuj online!
Zbyt wolny dla przypadków testowych z większymi wyjściami.
źródło
R ,
7562 bajtów-13 bajtów dzięki Giuseppe.
Wypróbuj online!
źródło
MathGolf , 10 bajtów
Wypróbuj online!
Zasadniczo taki sam jak odpowiedź 05AB1E, ale tracę bajt, ponieważ muszę jawnie przekonwertować skonkatenowaną liczbę na ciąg znaków.
Wyjaśnienie
źródło
APL + WIN, 37 bajtów
Monity o wprowadzenie liczby całkowitej. 1 indeksowany.
Wypróbuj online! Coutesy z Dyalog Classic
źródło
C # (interaktywny kompilator Visual C #) ,
123 bajty115 bajtówWypróbuj online!
źródło
f(61)
powinien zostać zwrócony0
(wygląda na to, że Twoje rozwiązanie ma 0 indeksów)K (oK) , 22 bajty
Rozwiązanie:
Wypróbuj online!
Wyjaśnienie:
0-indeksowane.
źródło
Galaretka , 10 bajtów
Wypróbuj online!
Łącze TIO podaje wszystkie wartości od 0 do 99.
Wyjaśnienie
źródło
Java 10,
119104102 bajtówPort odpowiedzi @TFeld na Python 2 .
-2 bajty dzięki @Imus .
1-indeksowany.
Wypróbuj online.
Wyjaśnienie:
Oryginalna wersja
119117 bajtów:0-indeksowane.
Wypróbuj online.
Wyjaśnienie:
źródło
CJam , 17 bajtów
Wypróbuj online!
W oparciu o 0.
Wyjaśnienie
źródło
""
, ale bez wbudowanych0
lub""
jest czasem przydatne w pętlach, ponieważ często są to pożądane wartości początkowe. Jeśli chodzi o brak100
lub1000
, tak, zgadzam się, że byłyby bardziej przydatne niż powiedzieć18
lub19
:~
ii
ze swojego kodu. :(Japt , 12 bajtów
0-indeksowane.
Wypróbuj lub przetestuj wszystkie wejścia
źródło
Czerwony ,
9794 bajtówWypróbuj online!
źródło
Stax , 11 bajtów
Uruchom i debuguj
Dane wejściowe są liczbami całkowitymi. Wyjście jest indeksowane na 0.
źródło
Perl 5
-MList::Util=any -ap
, 50 bajtówWypróbuj online!
Wyjście oparte na 1
źródło
Retina ,
8377 bajtówNaprawdę nie mam praktyki w skomplikowanym programowaniu w Retinie, ale jestem zadowolony z długości, w której udało mi się to zrobić.
Wysyła wynik z indeksem 0.
Wypróbuj online
Wyjaśnienie
źródło
Swift 5 / Xcode 10.2.1 ,
140134133 bajtówWypróbuj online!
źródło
Retina 0.8.2 , 36 bajtów
Wypróbuj online! Link zawiera pakiet testowy. 1-indeksowany. Wyjaśnienie:
Przedrostek 2406
_
s na wejściu.Zastępuj co 6
_
s liczbą poprzedzających_
. Generuje to sekwencja0
,6
,12
...2400
, ale automatycznie Łączy liczb.Pomiń początkowe 0 i znajdź pierwszą parę cyfr, która pasuje do dwóch ostatnich cyfr, tj. Wejścia z dopełnieniem zerowym (ponieważ łańcuch kończy się na
0
; w rzeczywistości pakiet testowy wykorzystuje fakt, że kończy się na00
).Podaj liczbę par cyfr aż do dopasowania włącznie.
Retina 1 zapisuje kilka bajtów, ponieważ jej operator powtarzania ciągów jest krótszy i domyślnie jest już
_
operandem po prawej stronie, dzięki czemu drugi wiersz kodu staje się sprawiedliwy2406*
. Inną cechą Retina 1 jest pomnożenie przez 6 w podstawieniu. Co ciekawe, nie wpływa to również na całkowitą liczbę bajtów, ponieważ końcowy wynik wygląda następująco:>
modyfikator, który generuje podstawienie w kontekście separatora po dopasowaniu, co w przypadku$.>`
powoduje włączenie długości dopasowania do wyniku. Mimo że kosztuje to bajt, zapisujemy go natychmiast, ponieważ nie musimy dopasowywać0
. (Powtórzenia również muszą zostać zmniejszone o 6.) Siatkówka 1 może również wykonywać podstawową arytmetykę w zamianie. Oznacza to, że nie musimy uciekać się do sztuczek, aby wziąć wielokrotności 6, zamiast tego po prostu generujemy liczby1..400
źródło
Bash , 80 bajtów
1-indeksowany.
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) , 88 bajtów
Wypróbuj online!
Kolejny port odpowiedzi na Java i Python .
Moja oryginalna odpowiedź poniżej:
C # (interaktywny kompilator Visual C #) , 102 bajty
Wypróbuj online!
Oba rozwiązania wykorzystują indeksowanie 1.
źródło
Rubinowy , 46 bajtów
Wypróbuj online!
źródło
Clojure, 102 bajty
Tak długo! :(
źródło