이것이 Kolakoski 시퀀스 (OEIS A000002 )를 정의하는 방법입니다.
Kolakoski 서열을 포함하는 서열이다
1
하고2
, 상기n
시퀀스의 번째 요소의 길이n
시퀀스 자체가 동일한 요소 (RUN)의 일 기. 시퀀스의 처음 20 개 항과 각 길이는 다음과 같습니다.1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 - --- --- - - --- - --- --- - --- --- - 1 2 2 1 1 2 1 2 2 1 2 2 1
기본적으로 Kolakoski 시퀀스의 동일한 요소 그룹의 길이는 Kolakoski 시퀀스 자체입니다.
지금까지는 훌륭했지만, 왜 우리 자신 1
과를 제한해야 2
합니까? 우리는하지 않을 것입니다! 양의 정수 A
와 정수로 구성된 두 개의 입력이 주어지면 을 순환하여 정의 된 Kolakoski와 같은 시퀀스 N
의 첫 번째 N
항을 반환합니다 A
. 이해를 돕기 위해 새로 추가 된 그룹의 길이를 괄호로 묶은 예제가 있습니다.
A = [2, 3, 1]
N = 25
2: [[2], 2 ]
3: [ 2 ,[2], 3 , 3 ]
1: [ 2 , 2 ,[3], 3 , 1 , 1 , 1 ]
2: [ 2 , 2 , 3 ,[3], 1 , 1 , 1 , 2 , 2 , 2 ]
3: [ 2 , 2 , 3 , 3 ,[1], 1 , 1 , 2 , 2 , 2 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 ,[1], 1 , 2 , 2 , 2 , 3 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 ,[1], 2 , 2 , 2 , 3 , 1 , 2 ]
3: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 ,[2], 2 , 2 , 3 , 1 , 2 , 3 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 ,[2], 2 , 3 , 1 , 2 , 3 , 3 , 1 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 ,[2], 3 , 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 ]
3: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 ,[3], 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 ]
1: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 ,[1], 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 ]
2: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 1 ,[2], 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 , 2 , 2 ]
C: [ 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 , 2 , 3 , 1 , 2 , 3 , 3 , 1 , 1 , 2 , 2 , 3 , 3 , 3 , 1 , 2 , 2 ]
다음은 주요한 예제입니다 1
.
A = [1, 2, 3]
N = 10
1: [[1]]
2: [ 1 ,[2], 2 ]
3: [ 1 , 2 ,[2], 3 , 3 ]
1: [ 1 , 2 , 2 ,[3], 3 , 1 , 1 , 1 ]
2: [ 1 , 2 , 2 , 3 ,[3], 1 , 1 , 1 , 2 , 2 , 2 ]
C: [ 1 , 2 , 2 , 3 , 3 , 1 , 1 , 1 , 2 , 2 ]
위에서 볼 수 있듯이 최종 결과는 N = 10
요소 로 잘 렸습니다 . n
번째 요소는 얼마나 있어야 n
동등한 요소 일 기이고, 소자 자체는 그것이 참조하는 그룹에 속하는 경우에도. 위의 경우에서와 같이, 첫 번째 1
는 첫 번째 그룹을 의미 1
하며, 첫 번째 2
는 두 번째 그룹을 의미합니다.
규칙
A
두 개 이상의 연속 된 동일한 요소를 가지지 않을 것이라고 가정 할 수 있습니다 .A
번 이상 정수를 포함 할 수 있지만, 첫 번째 및 마지막 요소는 동일하지 않으며,A
적어도 두 요소를 포함한다 (예를[1, 2, 2, 3]
,[2, 4, 3, 1, 2]
및[3]
부여하지 않을). 연속 된 동일한 요소가있는 경우 최종 결과는 이러한 시퀀스에 대해 잘못된 접두사가 되었기 때문입니다.A
양의 정수만 포함 한다고 가정 할 수 있습니다 (그러한 순서는 달리 정의되지 않으므로).N
음수가 아닌 정수 (N >= 0
) 라고 가정 할 수 있습니다 .- 요청한 것보다 더 많은 조건을 반환 할 수 없습니다.
- 표준 허점 중 하나를 사용하는 것은 엄격히 금지되어 있습니다.
- 합리적인 I / O 방법을 사용할 수 있습니다 .
- 당신의 대답은 자연 언어 제한을 넘어서 작동 할 필요는 없지만 이론적으로 알고리즘은 임의로 큰 입력과 정수에 대해 작동해야합니다 .
- 이것은 code-golf 이므로 가장 짧은 답변이 이깁니다.
테스트 사례
[5, 1, 2], 0 -> []
[2, 3, 1], 25 -> [2, 2, 3, 3, 1, 1, 1, 2, 2, 2, 3, 1, 2, 3, 3, 1, 1, 2, 2, 3, 3, 3, 1, 2, 2]
[1, 2, 3], 10 -> [1, 2, 2, 3, 3, 1, 1, 1, 2, 2]
[1, 2], 20 -> [1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 1, 2, 1, 1, 2, 2, 1]
[1, 3], 20 -> [1, 3, 3, 3, 1, 1, 1, 3, 3, 3, 1, 3, 1, 3, 3, 3, 1, 1, 1, 3]
[2, 3], 50 -> [2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 3, 3, 2, 2, 2, 3, 3, 3, 2, 2, 2, 3, 3]
[7, 4], 99 -> [7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 7, 7, 7, 7, 7, 7, 7, 4]
[1, 2, 3], 5 -> [1, 2, 2, 3, 3]
[2, 1, 3, 1], 2 -> [2, 2]
[1, 3, 5], 2 -> [1, 3]
[2, 3, 2, 4], 10 -> [2, 2, 3, 3, 2, 2, 2, 4, 4, 4]