Rozważ następującą sekwencję:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 0, 1, ...
Cyfry parzyste zaczynają się od 0 i są pogrupowane w ciągi o coraz większej długości. Są one rozmieszczone cyklicznie, co oznacza, że są sortowane w porządku rosnącym do osiągnięcia 8 , a następnie cofane od 0 . 1 oddziela przebiegi parzystych cyfr, a także rozpoczyna sekwencję. Wyobraźmy sobie, jak powstaje ta sekwencja:
1, 0, 1, 2, 4, 1, 6, 8, 0, 1, 2, 4, 6, 8, 1, 0, 2, 4, 6, 8, 1, ...
- ---- ------- ---------- -------------
run length: 1 2 3 4 5 ...
position of 1: X X X X X X ...
even sequence: 0, 2, 4, 6, 8, 0, 2, 4, 6, 8, 0, 2, 4, 6, 8 ...
Dopuszczalne metody wejścia i wyjścia:
Odbierz liczbę całkowitą N jako dane wejściowe i wyślij N- ty człon tej sekwencji.
Odbierz liczbę całkowitą N jako dane wejściowe i wyślij pierwsze N składników tej sekwencji.
Wydrukuj sekwencję w nieskończoność.
Możesz wybrać indeksowanie 0 lub 1 dla pierwszych dwóch metod.
Możesz konkurować w dowolnym języku programowania , korzystając ze standardowych metod wejścia i wyjścia . Standardowe luki są zabronione. To jest golf golfowy , więc wygrywa najkrótszy kod w każdym języku.
Odpowiedzi:
Haskell ,
5046 bajtówWypróbuj online!
1#cycle[0,2..8]
zwraca sekwencję jako nieskończoną listę.-4 bajty dzięki Ørjan Johansen!
źródło
#
tylko liczby. Wypróbuj online!Galaretka , 10 bajtów
Zwraca pierwsze n elementów sekwencji.
Wypróbuj online!
Jak to działa
źródło
Unhalve
... Czy to nie tylkoDouble
?H
jest o połowę , więcḤ
jest bezdechowe .ÆA
jest arccosine , więcÆẠ
jest unarccosine .Łuska ,
121110 bajtówWypróbuj online!
Drukuje sekwencję w nieskończoność.
Alternatywnie:
Wypróbuj online!
Wyjaśnienie
Dla alternatywnego rozwiązania:
Możemy to również zrobić
...ΘCN...
, ponieważΘ
„wstawia domyślny element”, który przygotowuje zero dla list liczb całkowitych i pustą listę dla list list.źródło
Python 3 , 52 bajty
Pobiera indeks oparty na 1 i zwraca wartość True lub integralną liczbę zmiennoprzecinkową .
Wypróbuj online!
źródło
Python 2 , 51 bajtów
Drukuje całą sekwencję.
Wypróbuj online!
źródło
APL, 25 bajtów
Zwraca n-ty termin.
Wyjaśnienie
źródło
APL (Dyalog Unicode) ,
525956 bajtówWypróbuj online!
To tradfn ( upr itional F unctio N ), biorąc jeden argument
k
i powrót pierwszek
elementy sekwencji.Dzięki @GalenIvanov za wskazanie błędu w funkcji. Dzięki @ Adám za 3 bajty.
Jak to działa:
Poniżej podano
Dfn
( d Skierować f unctio n ) i ukrytą funkcję również rozwiązać problemu, oba uzyskane dzięki uprzejmości @ ADAM.{⍵⍴1,∊1,⍨¨j⍴¨(+\¯1+j←⍳⍵)⌽¨⊂0,2×⍳4}
Wypróbuj online!⊢⍴1,∘∊1,⍨¨⍳⍴¨(⊂0,2×⍳4)⌽⍨¨(+\¯1+⍳)
Wypróbuj online!źródło
JavaScript (ES6),
625452 bajtyZwraca N- ty ciąg sekwencji, 0-indeksowany.
Próbny
Pokaż fragment kodu
źródło
C (gcc), 84 bajtów
Wypróbuj online!
Funkcja (
f()
), która drukuje sekwencję w nieskończoność, oddzielona spacjami.i
to długość bieżącego parzystego przebiegu.j
jest indeksem w bieżącym parzystym przebiegu(2*j+++i*i-i)%10
daje poprawną liczbę parzystą, biorąc pod uwagę i i j (i przyrosty j), równoważne ((j + Tr (i))% 5) * 2, gdzie Tr (x) jest x liczbą trójkątną (która jest liczbą parzystą liczby, które zostały wydrukowane przed bieżącym nawet uruchomieniem;źródło
Java 8, 96 bajtów
Drukuje w nieskończoność, każdy numer w nowej linii.
Wyjaśnienie:
Wypróbuj tutaj.
źródło
Partia, 85 bajtów
Wysyła N-ty ciąg sekwencji. Działa poprzez obliczenie następnej liczby trójkątnej.
źródło
Perl 5 , 44 bajtów
Wypróbuj online!
Nieskończona wydajność
źródło
{...;redo}
zamiastdo{...}while 1
J ,
464240 bajtów-6 bajtów dzięki Cole
Wysyła pierwsze N wyrazów tej sekwencji.
Jak to działa:
10|[:+:i.
- generuje listę o długości N od 0 2 4 6 8 0 2 4 ... Po prostu pobiera mod 10 z podwójnych pozycji na liście liczb całkowitych zaczynających się od 0.[:;[:#:&.>2^i.
- generuje nieco maskę do wycięcia powyższej listy.(1 oznacza start): 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 ... Znajduje 2 do potęgi kolejnych liczb całkowitych nieujemnych, konwertuje je na binarne, spłaszcza listy i pobiera tylko pierwsze N elementów, dzięki czemu długość obu list jest taka sama.
;@(1,&.><;.1)
- dzieli (przycina) listę cyfr parzystych na podlisty zgodnie z mapą zer i jedynek, dołącza podlistę do 1, a na koniec spłaszcza wynikową listę]{.
- bierze tylko pierwsze N przedmiotów, pozbywając się dodatkowych numerów na liście z powodu dodanych 1.Wypróbuj online!
źródło
{.({.[:;[:#:&.>2^i.);@(1,&.><;.1)(10|2*i.)
. Zmiany, które wprowadziłem, polegały na użyciu haków i refaktoryzacji prawego palca widelca, aby skorzystać z działania widelców. Lubię2^i.
podstęp. Próbuję teraz popracować nad lewym zębem widelca.(10|2*i.)
->10|2*i.
Common Lisp, 74 bajty
Wypróbuj online!
Drukuje sekwencję w nieskończoność.
źródło
Perl 5, 35 bajtów
spróbuj online
źródło
Galaretka , 17 bajtów
Wypróbuj online!
źródło
Proton , 55 bajtów
Wypróbuj online!
Drukuje sekwencję w nieskończoność
źródło
i=0 j=-2while1{
...-2while
jest podobny do Pythona iwhile1
dlatego, że sprawiłem, że identyfikatory nie mogą być słowem kluczowym, po którym następuje cyfraJava (OpenJDK 8) , 107 bajtów
Wypróbuj online!
źródło
Mathematica, 68 bajtów
Zwraca N-ty termin
Wypróbuj online!
źródło
Wolfram Language (Mathematica) , 61 bajtów
Wypróbuj online!
źródło
JavaScript, 45 bajtów
1 indeksowany:
0 indeksowanych:
Pokaż fragment kodu
źródło
Rubinowy ,
4846 bajtówWypróbuj online!
Wydrukuj sekwencję w nieskończoność
źródło
bash, 42 bajty
lub 34, jeśli jest ważny
spróbuj online
źródło