ลองเล่นเกมที่ผู้เล่นคนหนึ่งที่เรียกว่ากระโดดอาร์เรย์ ในการเล่นคุณต้องใช้อาร์เรย์ของจำนวนเต็ม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ซึ่งให้ผลลัพธ์ที่ไม่ใช่ค่าลบเสมอ