문제
단일 연속 간격에서 시작하여 아직 삭제되지 않은 모든 간격의 중간에서 일부 합리적인 길이 세그먼트를 반복적으로 삭제 하여 일반화 된 Cantor 세트 를 정의 해 봅시다 .
삭제할 세그먼트의 상대적 길이와 반복 횟수를 고려할 때 문제는 반복 후에 삭제되었거나 삭제되지 않은 세그먼트의 상대 길이를 출력 하는 프로그램 또는 함수 를 작성하는 것 n
입니다.
예 : 4 번째와 6 번째 8 번째를 반복적으로 삭제
입력:
n
– 0 또는 1에서 시작하여 색인화 된 반복 횟수
l
– gcd(l)=1
삭제되지 않은 세그먼트에서 시작하여 그대로 유지되거나 삭제되는 부분의 상대 길이를 나타내는 홀수 길이와 홀수 길이를 갖는 양의 정수로 세그먼트 길이 목록 . 목록 길이가 홀수이므로 첫 번째 세그먼트와 마지막 세그먼트는 절대 삭제되지 않습니다. 예를 들어 일반 Cantor 세트의 경우 3 분의 1, 삭제 된 3 분의 1, 삭제되지 않은 3 분의 1은 [1,1,1]입니다.
산출:
정수리스트는 o
, gcd(o)=1
상기 상대 세그먼트 길이 n
번째 반복은 이전 반복에서 삭제되지 않은 세그먼트가 목록의 축소 복사본에 의해 대체 될 때 l
. 첫 번째 반복은 단지 [1]
입니다. 모호하지 않은 출력 방법, 심지어 단항도 사용할 수 있습니다 .
예
n=0, l=[3,1,1,1,2] → [1]
n=1, l=[3,1,1,1,2] → [3, 1, 1, 1, 2]
n=2, l=[3,1,1,1,2] → [9,3,3,3,6,8,3,1,1,1,2,8,6,2,2,2,4]
n=3, l=[5,2,3] → [125,50,75,100,75,30,45,200,75,30,45,60,45,18,27]
n=3, l=[1,1,1] → [1,1,1,3,1,1,1,9,1,1,1,3,1,1,1]
입력이 유효하다고 가정 할 수 있습니다. 이것은 code-golf 이므로 바이트 단위로 측정 된 가장 짧은 프로그램이 우선합니다.
[0, 1, 2, 4, 6, 7]
대신[3, 1, 1, 1, 2]