jump the array 라는 1 인용 게임을하겠습니다 . 재생하려면 정수 배열 만 필요합니다 (예 :) a. 당신은 어떤 위치에서 시작하고 i, 매 턴마다 새로운 위치로 점프합니다. 차례 n에
- 경우
n에도, 당신은 절대 위치로 이동a[i] mod length(a), - 경우
n홀수, 당신은 상대적인 위치로 이동합니다(i + a[i]) mod length(a).
배열 인덱싱은 0에서 시작합니다. 첫 번째 점프를 turn 0또는 turn 으로 계산하여 1다른 게임을 할 수 있습니다. 게임의 상태 공간이 유한하기 때문에 (당신의 이동은 당신의 위치와 턴 번호의 패리티에 의해 결정됩니다), 결국 당신은 결국 짝수 길이의 루프에 들어갈 것입니다. loop(a, i, b)첫 번째 점프가 turn으로 계산 될 때이 루프의 길이를 나타냅니다 b.
입력
a게임을하기 위해 비어 있지 않은 정수 배열 .
산출
최대 번호 p일부 위치에서 시작할 경우 같은 것을 i하고 중 바와 같이, 제 1 회전을 계산 0하거나 1, 당신은 결국 길이의 루프를 입력합니다 2 * p. 즉, 출력은 숫자입니다
max { loop(a, i, b)/2 : i in [0 .. length(a)-1], b in [0,1] }
규칙
기능이나 전체 프로그램을 제공 할 수 있습니다. 가장 작은 바이트 수가 이기고 표준 허점은 허용되지 않습니다.
테스트 사례
[0] -> 1
[-213] -> 1
[1,3,12,-1,7] -> 1
[2,3,5,7,9,11,13,17,19] -> 2
[-2,3,-5,7,-9,11,-13,17,-19,23,-27] -> 3
[0,2,5,4,-9,0,-1,1,-1,1,-6] -> 4
mod항상 긍정적 ( -1 mod 5 == 4) 으로 정의되어 있다고 가정합니다 . 그 경우입니까?
mod항상 음이 아닌 결과를 얻습니다 .