Một chức năng được cho là có một chu kỳ có độ dài n nếu có tồn tại một x trong phạm vi của nó mà f n (x) = x và f m (x) ≠ x cho 0 <m <n , nơi superscript n biểu thị n - ứng dụng gấp của f . Lưu ý rằng một chu kỳ có độ dài 1 là một điểm cố định f (x) = x .
Nhiệm vụ của bạn là thực hiện một chức năng phỏng đoán từ các số nguyên cho chính chúng, có chính xác một chu kỳ của mỗi độ dài dương n . Hàm sinh học là một tương ứng một-một, tức là mọi số nguyên được ánh xạ tới chính xác một lần. Có chính xác một chu kỳ có độ dài n có nghĩa là có chính xác n số x riêng biệt mà f n (x) = x và f m (x) ≠ x với 0 <m <n .
Dưới đây là một ví dụ về chức năng như vậy có thể trông như thế nào xung quanh x = 0 :
x ... -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
f(x) ... 2 4 6 -3 -1 1 -4 0 -2 5 7 -7 -6 3 -5 ...
Đoạn trích này chứa các chu kỳ có độ dài từ 1 đến 5 :
n cycle
1 0
2 -2 1
3 -4 -3 -1
4 -5 6 3 7
5 -7 2 5 -6 4
...
Lưu ý rằng ở trên tôi chỉ sử dụng "hàm" theo nghĩa toán học. Bạn có thể viết một hàm hoặc một chương trình đầy đủ bằng ngôn ngữ bạn chọn, miễn là nó lấy một số nguyên (đã ký) làm đầu vào và trả về một số nguyên (đã ký). Như thường lệ, bạn có thể nhận đầu vào qua STDIN, đối số dòng lệnh, đối số hàm, v.v. và đầu ra qua STDOUT, giá trị trả về hàm hoặc đối số hàm (out), v.v.
Tất nhiên, nhiều ngôn ngữ không (dễ dàng) hỗ trợ các số nguyên chính xác tùy ý. Sẽ tốt nếu việc triển khai của bạn chỉ hoạt động trên phạm vi loại số nguyên gốc của ngôn ngữ của bạn, miễn là nó bao gồm ít nhất phạm vi [-127, 127] và nó sẽ hoạt động cho các số nguyên tùy ý nếu loại số nguyên của ngôn ngữ được thay thế bằng tùy ý- số nguyên chính xác.
Luật golf tiêu chuẩn được áp dụng.