jump the arrayというワンプレイヤーゲームをプレイしましょう。プレイするには、整数の配列、たとえばのみが必要a
です。ある位置から開始しi
、各ターンで新しい位置にジャンプします。順番にn
、
n
偶数の場合、絶対位置にジャンプしa[i] mod length(a)
、n
が奇数の場合、相対位置にジャンプします(i + a[i]) mod length(a)
。
配列のインデックス付けはゼロから始まります。最初のジャンプをturn 0
またはturn としてカウントできます1
。これにより、異なるゲームができます。ゲームの状態空間は有限であるため(あなたの動きは自分の位置とターン番号のパリティによって決定されます)、もちろん最終的には偶数の長さのループに入ります。表すloop(a, i, b)
最初のジャンプがターンとしてカウントされ、このループの長さ、b
。
入力
a
ゲームをプレイする整数の空でない配列。
出力
p
ある位置から開始しi
、最初のターンをかのいずれかとしてカウントする0
場合1
、最終的にlengthのループに入るような最大数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
ます。これは常に非負の結果をもたらします。