배경
데이븐포트-Schinzel 시퀀스는 두 개의 양의 정수 파라미터 보유 d
및 n
. 주어진 매개 변수에 대한 모든 Davenport-Schinzel 시퀀스 세트를로 표시합니다 DS(d,n)
.
자연수의 모든 시퀀스 고려 1
에 n
만족 포함을, :
- 시퀀스에서 두 개의 연속 된 숫자는 동일하지 않습니다.
- 보다 큰 길이의 하위 시퀀스 (연속적인 것은 아님)가 없으며
d
두 개의 다른 숫자 사이에서 번갈아 나타납니다.
하자 L
그러한 시퀀스의 최대 길이를 나타낸다 (부여 d
하고 n
). 그런 다음 DS(d,n)
length가있는 모든 이러한 시퀀스의 집합입니다 L
.
몇 가지 예가 도움이 될 수 있습니다. 보자 d = 4
, n = 3
. 이러한 제약 조건이있는 가장 긴 시퀀스는 다음과 같습니다 L = 8
. 다음은 멤버입니다 DS(4,3)
.
[1, 2, 1, 3, 1, 3, 2, 3]
연속적인 동일한 수는 없으며 length의 교번하는 하위 시퀀스가 4
있지만 더 이상은 없습니다.
1 2 1 2
1 2 1 2
1 3 1 3
1 3 1 3
2 3 2 3
2 3 2 3
1 3 1 3
1 3 1 3
다음 예는 하지 에 DS(4,3)
:
[1, 2, 2, 3, 1, 3, 2, 3] # Two consecutive 2's.
[1, 2, 1, 3, 1, 3, 2, 1] # Contains alternating subsequences of length 5.
[1, 2, 1, 3, 1, 3, 2] # Longer valid sequences for d = 4, n = 3 exist.
자세한 내용은 MathWorld 및 OEIS 및 해당 참조 목록을 참조하십시오.
도전
두 개의 양의 정수가 주어지면 n
및 d
에서 Davenport-Schinzel 시퀀스를 생성하십시오 DS(d,n)
. 이것들은 일반적으로 고유하지 않으므로 유효한 단일 결과를 출력하십시오.
STDIN (또는 가장 가까운 대안), 명령 행 인수 또는 함수 인수를 통해 입력을 받아 함수의 결과를 리턴하거나 STDOUT (또는 가장 가까운 대안)에 인쇄하여 프로그램 또는 함수를 작성할 수 있습니다.
편리하고 명확한 문자열 또는 목록 형식을 사용하여 출력 할 수 있습니다.
이것은 코드 골프이므로 가장 짧은 제출 (바이트)이 이깁니다.
시퀀스 길이
서열이 유일하지 않기 때문에,이 과제에서 개별 예에 대해 많이 사용되지는 않는다. 그러나 두 가지 일반적인 유효성 문제는 출력을 확인하기가 매우 쉽기 때문에 주요 질문은 시퀀스의 길이가 올바른지 또는 유효한 시퀀스가 더 긴지 여부입니다. 따라서, 여기에 알려진 목록입니다 (1) L
주어진에 대한 d
과 n
:
\
d\n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
\-----------------------------------------------------------
1 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
3 | 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
4 | 1 4 8 12 17 22 27 32 37 42 47 53 58 64 69 75 81 86 92 98
5 | 1 5 10 16 22 29 ...
6 | 1 6 14 23 34 ...
7 | 1 7 16 28 41 ...
8 | 1 8 20 35 53 ...
9 | 1 9 22 40 61 ...
10 | 1 10 26 47 73 ...
이 표의 정보를 제출물에 하드 코딩해서는 안됩니다.
1 이 표는 1994 년 이후로 진행되었으므로 그 이후로 더 많은 진전이 있었을 것입니다. 그러나 모든 제출물이이 표의 더 큰 출품작도 합리적인 시간 안에 처리 할 수 있을지 의심됩니다.