두 개의 양의 정수
와 주어지면 증분 범위 시퀀스 의 첫 숫자를 반환해야 합니다.
증분 범위 시퀀스는 먼저 1에서 까지 의 범위를 생성 합니다. 예를 들어, 이 이면 목록 생성합니다 . 그런 다음 씩 증가한 마지막 값 을 기존 목록에 반복적으로 추가 하고 계속합니다.
예를 들어 의 입력은 다음과 같습니다.
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]
테스트 사례 :
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]
답변
답변
젤리 , 4 바이트
Ḷd§‘
x
왼쪽과 n
오른쪽 에 두 개의 양의 정수를 허용하는 양수 링크 는 양의 정수 목록을 생성합니다.
어떻게?
Ḷd§‘ - Link: x, n e.g 13, 3
Ḷ - lowered range (x) [0,1,2,3,4,5,6,7,8,9,10,11,12]
d - divmod (n) [[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2],[3,0],[3,1],[3,2],[4,0]]
§ - sums [0,1,2,1,2,3,2,3,4,3,4,5,4]
‘ - increment (vectorises) [1,2,3,2,3,4,3,4,5,4,5,6,5]
답변
R , 33 바이트
function(n,x,z=1:x-1)z%%n+z%/%n+1
포트 조나단 앨런의 파이썬 솔루션 .
R , 36 바이트
function(n,x)outer(1:n,0:x,"+")[1:x]
내 원래 솔루션; 각 열을 증분으로하여
행렬을 생성합니다 . 즉,
은 첫
항목 을 취 합니다 (열 아래로).
답변
05AB1E , 6 바이트
L<s‰O>
@JonathanAllan 의 젤리 답변 포트 , 그래서 그를 투표해야합니다!
첫 번째 입력은
이고 두 번째 입력은
입니다.
온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .
설명:
L # Push a list in the range [1, (implicit) input]
# i.e. 13 → [1,2,3,4,5,6,7,8,9,10,11,12,13]
< # Decrease each by 1 to the range [0, input)
# → [0,1,2,3,4,5,6,7,8,9,10,11,12]
s‰ # Divmod each by the second input
# i.e. 3 → [[0,0],[0,1],[0,2],[1,0],[1,1],[1,2],[2,0],[2,1],[2,2],[3,0],[3,1],[3,2],[4,0]]
O # Sum each pair
# → [0,1,2,1,2,3,2,3,4,3,4,5,4]
> # And increase each by 1
# → [1,2,3,2,3,4,3,4,5,4,5,6,5]
# (after which the result is output implicitly)
내 자신의 초기 접근 방식은 8 바이트 였습니다 .
LI∍εN¹÷+
첫 번째 입력은
이고 두 번째 입력은
입니다.
온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .
설명:
L # Push a list in the range [1, (implicit) input]
# i.e. 3 → [1,2,3]
I∍ # Extend it to the size of the second input
# i.e. 13 → [1,2,3,1,2,3,1,2,3,1,2,3,1]
ε # Map each value to:
N¹÷ # The 0-based index integer-divided by the first input
# → [0,0,0,1,1,1,2,2,2,3,3,3,4]
+ # Add that to the value
# → [1,2,3,2,3,4,3,4,5,4,5,6,5]
# (after which the result is output implicitly)
답변
펄 6 , 18 바이트
{(1..*X+ ^*)[^$_]}
카레 기능 f(x)(n)
.
설명
{ } # Anonymous block
X+ # Cartesian product with addition
1..* # of range 1..Inf
^* # and range 0..n
( )[^$_] # First x elements
답변
Brain-Flak , 100 바이트
(<>)<>{({}[()]<(({}))((){[()](<{}>)}{}){{}{}<>(({})<>)(<>)(<>)}{}({}[()]<(<>[]({}())[()]<>)>)>)}{}{}
주석과 형식 :
# Push a zero under the other stack
(<>)<>
# x times
{
# x - 1
({}[()]<
# Let 'a' be a counter that starts at n
# Duplicate a and NOT
(({}))((){[()](<{}>)}{})
# if a == 0
{
# Pop truthy
{}
<>
# Reset n to a
(({})<>)
# Push 0 to each
(<>)(<>)
}
# Pop falsy
{}
# Decrement A, add one to the other stack, and duplicate that number under this stack
({}[()]<
(<>[]({}())<>)
>)
>)
}
답변
J , 13 12 바이트
[$[:,1++/&i.
어떻게
우리 는 오른쪽 x
과 n
같이 왼쪽 인수 로 사용합니다. 의는하자 x = 8
및 n = 3
이 예를 들면 :
-
+/&i.
: 정수 범위를 작성하여 두 인수를 변환하십시오i.
. 즉, 왼쪽 arg가0 1 2 3 4 5 6 7
되고 오른쪽 arg가됩니다0 1 2
. 이제 우리+/
는 그 두 가지로부터 “추가 테이블 을 만듭니다 :0 1 2 1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9
-
1 +
:이 테이블의 모든 요소에 1을 추가하십시오.1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10
-
[: ,
: 평평하게,
:1 2 3 2 3 4 3 4 5 4 5 6 5 6 7 6 7 8 7 8 9 8 9 10
-
[ $
: 그 모양$
원래, 변환되지 않은 왼쪽 인수 같은 수의 요소가 있으므로[
, 예를x
:1 2 3 2 3 4 3 4