Lassen Sie uns ein Ein-Spieler-Spiel namens Jump the Array spielen . Zum Spielen benötigen Sie beispielsweise nur eine Reihe von ganzen Zahlen a
. Sie beginnen an einer bestimmten Position i
und springen in jeder Runde zu einer neuen Position. Am Turn n
,
- wenn
n
gerade, springt man zur absoluten Positiona[i] mod length(a)
, - Wenn
n
ungerade ist, springen Sie zur relativen Position(i + a[i]) mod length(a)
.
Die Array-Indizierung beginnt bei Null. Sie können den ersten Sprung als Zug 0
oder Zug zählen 1
, was ein anderes Spiel ergibt. Da der Zustandsraum des Spiels endlich ist (Ihr Zug wird durch Ihre Position und die Parität der Zugnummer bestimmt), werden Sie natürlich irgendwann eine Schleife von gerader Länge eingeben. Geben Sie loop(a, i, b)
die Länge dieser Schleife an, wenn der erste Sprung als Drehung gezählt wird b
.
Eingang
Ein nicht leeres Array a
von Ganzzahlen, mit denen das Spiel gespielt werden soll.
Ausgabe
Die maximale Anzahl p
, sodass Sie, wenn Sie an einer bestimmten Position beginnen i
und die erste Abbiegung als entweder 0
oder zählen 1
, schließlich eine Längenschleife eingeben 2 * p
. Mit anderen Worten, Ihre Ausgabe ist die Zahl
max { loop(a, i, b)/2 : i in [0 .. length(a)-1], b in [0,1] }
Regeln
Sie können eine Funktion oder ein vollständiges Programm angeben. Die kleinste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Testfälle
[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
ist -1 mod 5 == 4
anders als in C als immer positiv ( ) definiert . Ist das der Fall?
mod
, der immer nicht negative Ergebnisse liefert.