Hãy chơi một trò chơi một người chơi gọi là nhảy mảng . Để chơi, bạn chỉ cần một mảng các số nguyên, nói a. Bạn bắt đầu ở một vị trí nào đó i, và trên mỗi lượt, bạn nhảy sang một vị trí mới. Lần lượt n,
- nếu
nlà chẵn, bạn nhảy đến vị trí tuyệt đốia[i] mod length(a), - nếu
nlà số lẻ, bạn nhảy đến vị trí tương đối(i + a[i]) mod length(a).
Việc lập chỉ mục mảng bắt đầu từ 0. Bạn có thể tính bước nhảy đầu tiên là lượt 0hoặc lượt 1, điều này mang lại một trò chơi khác. Vì không gian trạng thái của trò chơi là hữu hạn (di chuyển của bạn được xác định bởi vị trí của bạn và tính chẵn lẻ của số lần lượt), nên cuối cùng bạn sẽ nhập một vòng có độ dài chẵn. Biểu thị theo loop(a, i, b)độ dài của vòng lặp này, khi bước nhảy đầu tiên được tính là lượt b.
Đầu vào
Một mảng không nhiều asố nguyên để chơi trò chơi.
Đầu ra
Số lượng tối đa psao cho, khi bắt đầu ở một số vị trí ivà đếm lượt đầu tiên là 0hoặc 1, cuối cùng bạn sẽ nhập một vòng có độ dài 2 * p. Nói cách khác, đầu ra của bạn là số
max { loop(a, i, b)/2 : i in [0 .. length(a)-1], b in [0,1] }
Quy tắc
Bạn có thể cung cấp một chức năng hoặc một chương trình đầy đủ. Số byte nhỏ nhất sẽ thắng và các sơ hở tiêu chuẩn không được phép.
Các trường hợp thử nghiệm
[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được định nghĩa là luôn luôn dương ( -1 mod 5 == 4) không giống như trong C. Có phải vậy không?
mod, luôn mang lại kết quả không âm.