Давайте пограємо в гру для одного гравця, яку називають стрибком масиву . Для відтворення, скажімо, потрібен лише масив цілих чисел a. Ви починаєте з якоїсь позиції i, і на кожному повороті ви переходите до нової позиції. У свою чергу n,
- якщо
nце рівно, ви переходите до абсолютного положенняa[i] mod length(a), - якщо
nце не дивно, ви стрибаєте у відносне положення(i + a[i]) mod length(a).
Індексація масиву починається з нуля. Ви можете рахувати перший стрибок як поворот 0або поворот 1, які дають іншу гру. Оскільки простір стану гри є обмеженим (ваш хід визначається вашою позицією та паритетом числа повороту), ви, звичайно, введете цикл рівної довжини. Позначається loop(a, i, b)довжиною цієї петлі, коли перший стрибок рахується як поворот b.
Вхідні дані
Непорожній масив aцілих чисел для гри в гру.
Вихідні дані
Максимальна кількість pтаких, що, починаючи з якоїсь позиції iі рахуючи перший виток як 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) на відміну від C. Це так?
mod, який завжди дає негативні результати.