Zagrajmy w grę dla jednego gracza o nazwie przeskocz tablicę . Powiedzmy, że do gry wystarczy tablica liczb całkowitych a. Zaczynasz od pewnej pozycji ii za każdym razem skaczesz do nowej pozycji. Na kolei n,
- jeśli
njest parzysty, przeskakujesz do pozycji absolutneja[i] mod length(a), - jeśli
njest nieparzysty, przeskakujesz do względnej pozycji(i + a[i]) mod length(a).
Indeksowanie tablicy rozpoczyna się od zera. Pierwszy skok możesz zaliczyć jako turę 0lub turę 1, które dają inną grę. Ponieważ przestrzeń stanu gry jest skończona (ruch zależy od twojej pozycji i parzystości liczby tur), oczywiście w końcu wejdziesz w pętlę o równej długości. Oznacz loop(a, i, b)długość tej pętli, gdy pierwszy skok jest liczony jako zwrot b.
Wejście
Niepuste tablice aliczb całkowitych do gry.
Wynik
Maksymalna liczba ptaka, że rozpoczynając od jakiejś pozycji ii licząc pierwszy zakręt jako jeden 0lub 1, ostatecznie wprowadzasz pętlę długości 2 * p. Innymi słowy, twój wynik to liczba
max { loop(a, i, b)/2 : i in [0 .. length(a)-1], b in [0,1] }
Zasady
Możesz podać funkcję lub pełny program. Wygrywa najmniejsza liczba bajtów, a standardowe luki są niedozwolone.
Przypadki testowe
[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
modjest zdefiniowane jako zawsze pozytywne ( -1 mod 5 == 4) w przeciwieństwie do C. Czy tak jest w tym przypadku?
mod, który zawsze daje nieujemne wyniki.