Wyzwanie:
Biorąc pod uwagę liczbę całkowitą indeksu n
, albo n
wypisz pozycję th w tej sekwencji, albo wypisz sekwencję do indeksu włącznie n
:
25,25,7,28,29,20,21,22,23,14,35,26,7,28,29,20,16,29,12,15,28,21,14,17,30,13,16,29,12,15,28,21,10,6,12,18,15,11,7,13,19,17,13,9,15,21,18,14,10,16,22,19,15,11,17,23,20,16,12,18,24,21,17,13,19,25,23,19,15,21,27,24,20,16,22,28,25,21,17,23,29,16,13,9,15,21,18,14,10,16,22,20,16,12,18,24,21,17,13,19
Jak działa ta sekwencja?
UWAGA: W tym objaśnieniu indeks n
ma indeks 1.
Umieścić numery 1
przez x
dwóch linii długości n*6 - 1
, gdzie x
zależy od bieżącej iteracji i długości numerów używanych, a następnie zsumować cyfry n
„TH / prawym większości olimpijskich pierścieni tych dwóch linii.
Pierwszą liczbę w sekwencji oblicza się w następujący sposób:
The length of the lines are 5 (because 1*6 - 1 = 5):
12345
67891(0)
Then leave the digits in an Olympic Rings pattern:
1 3 5
7 9
And sum them:
1+3+5+7+9 = 25
Więc n=1
wyniki w 25
.
Druga liczba w sekwencji jest obliczana w następujący sposób:
The length of the lines are 11 (because 2*6 - 1 = 11):
12345678910
11121314151(6)
Then leave the digits in the second/right-most Olympic Rings pattern:
7 9 0
4 5
And sum them:
7+9+0+4+5 = 25
Więc n=2
wyniki w 25
.
Trzecią liczbę w sekwencji oblicza się w następujący sposób:
The length of the lines are 17 (because 3*6 - 1 = 17):
12345678910111213
14151617181920212(2)
Then leave the digits in the third/right-most Olympic Rings pattern:
1 2 3
0 1
And sum them:
1+2+3+0+1 = 7
Więc n=3
wyniki w 7
.
itp.
Zasady konkursu:
- Kiedy wypisujesz
n
'ósmy element w sekwencji, możesz wziąć dane wejściowe jako 0-indeksowane zamiast 1-indeksowane, ale pamiętaj, że obliczenian*6 - 1
będą wtedy(n+1)*6 - 1
lub(n+1)*5 + n
. - Pojedyncze liczby więcej niż jednej cyfry można podzielić na końcu pierwszego wiersza, gdy osiągniemy długość
n*5 + n-1
, więc możliwe jest, że liczba z 2 lub więcej cyframi jest częściowo końcową częścią linii 1, a częściowo wiodąca część linii 2.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe:
Oto kosz na śmieci z przypadków testowych 1-1,000 , więc możesz wybrać dowolny z nich.
Niektóre dodatkowe wyższe przypadki testowe:
1010: 24
1011: 24
2500: 19
5000: 23
7500: 8
10000: 8
100000: 25
1*5 + 1-1 = 5
? Nie powinno tak być1*5 + 5 - 1 = 9
?n=1
więcn*5 + n-1
staje się1*5 + 1-1
, co z kolei jest5 - 0 = 5
.n * 5 + n - 1
równyn * 6 - 1
?Odpowiedzi:
Łuska , 16 bajtów
Wypróbuj online!
-3 bajty dzięki H.PWiz .
(Rzucili) wyjaśnienie:
źródło
Retina ,
706862 bajtówWypróbuj online!
Wyjaśnienie
Nazwijmy wejście n , a wykorzystamy
3
jako przykład.10**
Jest skrótem10*$&*_
, który zastępuje wejście z ciągiem 10n podkreślenia.Teraz zastępujemy każdy znak podkreślenia długością łańcucha do tego podkreślenia włącznie. W ten sposób powstaje tylko liczba od 1 do 10n połączonych razem ( 10n jest zawsze wystarczające, aby wypełnić dwie linie o wymaganej długości).
Eval! Ten i następny etap wygeneruje kod źródłowy innego programu, który jest następnie uruchamiany dla tego ciągu połączonych liczb całkowitych.
Aby wygenerować ten program, ten etap najpierw zastępuje liczby całkowite ciągiem znaków podkreślenia 6n (
$+
odnosi się do oryginalnego wejścia programu).Następnie zamień te podkreślenia na
L`.{…}
, gdzie…
wynosi 6n-1 (długość linii, na które patrzymy). Wygenerowaliśmy więc wyrażenie regularne, którego kwantyfikator zależy od oryginalnych danych wejściowych.Kiedy program zostanie sprawdzony, dopasowuje fragmenty o długości 6n-1 , z których będą co najmniej dwa. W naszym przykładowym danych wejściowych
3
otrzymujemy:Teraz musimy tylko wyodrębnić odpowiednie cyfry.
Najpierw w każdej linii (
%
) usuwamy wszystkie oprócz ostatnich pięciu cyfr (,-6
). To nam dajeWreszcie:
Rozwijamy każdą inną cyfrę (
2
) w pierwszej dziesiątce (9
ta jest oparta na 0) w postaci jedności. Tak się składa, że znajdują się na pozycjach pierścieni olimpijskich.I zliczamy liczbę wynikowych podkreśleń, aby je zsumować i przekonwertować wynik na dziesiętny.
źródło
1
.-7
Python 2 ,
9490 bajtówWypróbuj online!
źródło
Japt ,
333230292827 bajtówOch, to nie jest ładne!
Wysyła n- ty składnik , indeksowany 1.
Spróbuj
Wyjaśnienie
źródło
Python 2 , 97 bajtów
Wypróbuj online!
źródło
Python 3,
129123 bajtówWypróbuj online
Jest to jednak dość popsute, ale działa.
źródło
05AB1E ,
222120 bajtówWypróbuj online!
Wyjaśnienie
Alternatywne podejście 21 bajtów
źródło
Galaretka , 19 bajtów
Wypróbuj online!
źródło
J ,
61, 5857 bajtówWypróbuj online!
źródło
Rubin ,
65 6356 bajtówWypróbuj online!
źródło
Czysty ,
138101 bajtówWypróbuj online!
źródło
Java 8,
138111109 bajtówOczywiście będę musiał odpowiedzieć na własne wyzwanie. :)
Straciłem początkowy kod, którego użyłem do stworzenia wyników testu w opisie wyzwania, więc zacząłem od nowa.
Wyjaśnienie:
Wypróbuj online.
źródło