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