"리듬 구성표"는에 대한 문자열 a
로 z
, 첫 번째 문자가에서 시작하여 오름차순 (간격없이)입니다 a
. 예를 들어 (첫 번째 항목이 표시된 상태) :
abccdbebdcfa
^^^ ^ ^ ^
길이의 운율의 수 N
는 벨 수에 의해 주어진다 B(N)
. ( OEIS A000110 )
도전
당신의 임무는 이러한 운율 체계의 열거, 즉 정수에서 운율 체계로의 형용사 매핑을 구현하는 것입니다. 양의 정수 N <= 26
와 음이 아닌 정수가 주어집니다 0 <= i < B(N)
. 또는 range를 사용할 수 있습니다 1 <= i <= B(N)
. N
모든 길이 i
가 다른 문자열을 생성하도록 length의 운율 체계를 출력해야 합니다.
STDIN (또는 가장 가까운 대안), 명령 행 인수 또는 함수 인수를 통해 입력을 받고 STDOUT (또는 가장 가까운 대안), 함수 리턴 값 또는 함수 (out) 매개 변수를 통해 결과를 출력하는 프로그램 또는 함수를 작성할 수 있습니다.
소문자 또는 대문자를 일관되게 사용할 수 있습니다.
귀하의 코드는 유효한 시간에 유효한 입력을 처리 할 수 있어야합니다 (예 : 최악의 경우 몇 시간 을 넘지 않아야 함 ). 이것은 느린 언어에서도 기하 급수적으로 (소규모의 경우) 확장되는 솔루션을 허용 하지만 (즉 ) 와 선형으로 확장되는 솔루션은 금지해야 합니다. 특히, 이는 스키마를 버릴 때까지 모든 유효한 운율 체계를 반복 할 수 없다는 것을 의미합니다 .N = 26
i
N
i
B(N)
N
i
표준 코드 골프 규칙이 적용됩니다.
예
i
to 체계 의 정확한 할당 (즉, 주어진 체계의 순서 N
)은 귀하에게 달려 있습니다. 그러나 사전 식 순서를 선택했다고 가정하면 솔루션이 다음 표와 일치해야합니다 ( -
잘못된 입력을 나타냄).
N\i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 a - - - - - - - - - - - - - -
2 aa ab - - - - - - - - - - - - -
3 aaa aab aba abb abc - - - - - - - - - -
4 aaaa aaab aaba aabb aabc abaa abab abac abba abbb abbc abca abcb abcc abcd
다음은 주어진 길이에 대해 유효한 모든 리듬 구성표를 생성 하는 짧은 CJam 스크립트 입니다 (하지만 10 회 이상 시도하지 않으면 잠시 기다립니다).
N
상당히 사소한 것으로 판명되지 않고 그것을 발견하기에는 너무 어리 석 다면 (골프) 다항식 솔루션에 현상금을 넣을 수 있습니다.