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ます。これは常に非負の結果をもたらします。