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
항상 음이 아닌 결과를 얻습니다 .