Twoim zadaniem jest, biorąc pod uwagę dwie dodatnie liczby całkowite, i , zwrócenie pierwszych liczb w sekwencji zakresów przyrostowych.
Przyrostowa sekwencja zakresu najpierw generuje zakres od jednego do włącznie. Na przykład, jeśli wynosi , wygeneruje listę . Następnie wielokrotnie dołącza ostatnie wartości zwiększonych o do istniejącej listy i kontynuuje.
Na przykład :
n=3
1. Get range 1 to n. List: [1,2,3]
2. Get the last n values of the list. List: [1,2,3]. Last n=3 values: [1,2,3].
3. Increment the last n values by 1. List: [1,2,3]. Last n values: [2,3,4].
4. Append the last n values incremented to the list. List: [1,2,3,2,3,4]
5. Repeat steps 2-5. 2nd time repeat shown below.
2nd repeat:
2. Get the last n values of the list. List: [1,2,3,2,3,4]. Last n=3 values: [2,3,4]
3. Increment the last n values by 1. List: [1,2,3,2,3,4]. Last n values: [3,4,5].
4. Append the last n values incremented to the list. List: [1,2,3,2,3,4,3,4,5]
Przypadki testowe:
n, x, Output
1, 49, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49]
2, 100, [1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40,41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48,49,49,50,50,51]
3, 13, [1,2,3,2,3,4,3,4,5,4,5,6,5]
/
z//
Galaretka , 4 bajty
Dyadyczny link akceptujący dwie dodatnie liczby całkowite,
x
po lewej in
po prawej stronie, co daje listę dodatnich liczb całkowitych.Wypróbuj online!
W jaki sposób?
źródło
p
R , 33 bajty
Wypróbuj online!
Ports Jonathan Allan rozwiązanie Python .
R , 36 bajtów
Wypróbuj online!
Moje oryginalne rozwiązanie; generuje macierzn × x z każdą kolumną jako przyrost, tj. 1 … n , 2 … n + 1 , … , a następnie przyjmuje pierwsze x wpisów (zejście w dół kolumn).
źródło
05AB1E , 6 bajtów
Port odpowiedzi galaretki @JonathanAllan , więc upewnij się, że go głosujesz!
Pierwsze wejście tox , drugie wejście to n .
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
Moje własne początkowe podejście miało 8 bajtów :
Pierwsze wejście ton , drugie wejście to x .
Wypróbuj online lub sprawdź wszystkie przypadki testowe .
Wyjaśnienie:
źródło
Perl 6 , 18 bajtów
Wypróbuj online!
Funkcja curry
f(x)(n)
.Wyjaśnienie
źródło
Brain-Flak , 100 bajtów
Z komentarzami i formatowaniem:
Wypróbuj online!
źródło
J ,
1312 bajtówWypróbuj online!
w jaki sposób
Bierzemy
x
za lewy argument,n
za prawy. Weźmyx = 8
in = 3
dla tego przykładu:+/&i.
: Przekształć oba argumenty, tworząc zakresy liczb całkowitychi.
, tzn. Lewy argument staje się,0 1 2 3 4 5 6 7
a prawy argument0 1 2
. Teraz tworzymy „tabelę dodawania+/
z tych dwóch:1 +
: Dodaj 1 do każdego elementu tej tabeli:[: ,
: Spłaszcz to,
:[ $
: Ukształtuj go,$
aby zawierał tę samą liczbę elementów, co oryginalny, nietransformowany lewy argument[
, tj .x
:źródło
Oktawa , 25 bajtów
Funkcja anonimowa, że liczba wejściowych
n
ix
, i wysyła WEKTOROWEGO wierszowym.Wypróbuj online!
Jak to działa
Rozważ
n=3
ix=13
.Kod
(1:n)'
podaje wektor kolumnyNastępnie
(0:x)
podaje wektor wierszaDodanie
(1:n)'+(0:x)
jest elementarne z transmisją, więc daje macierz ze wszystkimi parami sum:Indeksowanie za pomocą
(1:x)
pobiera pierwszex
elementy tej macierzy w porządku liniowym według kolumny (w dół, a potem w poprzek), jako wektor wiersza:źródło
Haskell , 31 bajtów
Wypróbuj online!
To może być mój ulubiony rodzaj rekurencji. Zaczynamy od wartości od 1 do n, a następnie łączymy te same wartości (poprzez odniesienie własne) +1. wtedy bierzemy tylko pierwsze wartości x.
źródło
Dalej (gforth) , 34 bajty
Wypróbuj online!
Objaśnienie kodu
źródło
MATL ,
16, 10 bajtówWypróbuj online!
-6 bajtów zaoszczędzonych dzięki Guiseppe i Luisowi Mendo!
Wyjaśnienie:
źródło
Gaia , 8 bajtów
Wypróbuj online!
Robi w zasadzie to samo, co odpowiedzi Octave i MATL .
źródło
Galaretka , 5 bajtów
Wypróbuj online!
źródło
Rubinowy , 32 bajty
Wypróbuj online!
źródło
Japt
-m
,127 bajtówPort of Jonathan's Python solution .
Pobiera
x
jako pierwsze wejście.Spróbuj
źródło
JavaScript, 36 bajtów
Wypróbuj online!
źródło
alert
lubprint
zamiast powrotu tablica może zmniejszyć to do 34 bajtów:n=>g=x=>x&&print(g(--x)|1+x%n+x/n)
Perl 5
-na
, 43 bajtówWypróbuj online!
źródło
K (oK) ,
1716 bajtówWypróbuj online!
źródło
Stax , 6 bajtów
Uruchom i debuguj
Rozpakowano i wyjaśniono:
źródło
Alchemik , 77 bajtów
Wypróbuj online!
Zwiększa i wysyła licznik n razy, a następnie odejmuje n-1 przed powtórzeniem.
źródło
Węgiel drzewny , 18 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Miałem marzenia o zapełnieniu listy zakresem o indeksie zerowym, a następnie o odcięciu go, ale tak naprawdę było to 2 bajty dłużej. Wyjaśnienie:
źródło
JS, 54 bajty
Wypróbuj online!
źródło
f=
. Możesz zapisać jeden bajt, curry parametrów (n=>x=>
), a drugi, rozkładając i mapując tablicę ([...Array(x)].map()
).Haskell,
3433 bajtyWypróbuj online!
źródło
Perl 5 , 39 bajtów
Wypróbuj online!
źródło
C (gcc) ,
4944 bajtówUżywanie rekurencji do zapisywania niektórych bajtów.
Wypróbuj online!
źródło
APL + WIN,
29 2316 bajtówIndeks początku = 0 i monituje o n i x
Wypróbuj online! Dzięki uprzejmości Dyalog Classic
źródło
C (clang), 843 bajtów
źródło
argc
,argv
iranges
). Ponadto nie trzeba dodawać żadnych komunikatów ostrzegawczych. Możesz założyć, że dane wejściowe są prawidłowe, chyba że wyzwanie mówi inaczej.Ikona , 48 bajtów
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) , 41 bajtów
Wypróbuj online!
źródło
Współczynnik , 55 bajtów
Wypróbuj online!
źródło