Suatu fungsi dikatakan memiliki siklus panjang n jika ada x dalam domainnya sehingga f n (x) = x dan f m (x) ≠ x untuk 0 <m <n , di mana superscript n menunjukkan n - aplikasi lipat f . Perhatikan bahwa siklus panjang 1 adalah titik tetap f (x) = x .
Tugas Anda adalah mengimplementasikan fungsi bijective dari bilangan bulat ke diri mereka sendiri, yang memiliki tepat satu siklus dari setiap panjang positif n . Fungsi bijective adalah korespondensi satu-ke-satu, yaitu setiap bilangan bulat dipetakan tepat satu kali. Memiliki tepat satu siklus panjang n berarti bahwa ada tepat n nomor yang berbeda x yang f n (x) = x dan f m (x) ≠ x untuk 0 <m <n .
Berikut ini contoh tampilan dari fungsi tersebut di sekitar 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 ...
Kutipan ini berisi siklus dengan panjang 1 hingga 5 :
n cycle
1 0
2 -2 1
3 -4 -3 -1
4 -5 6 3 7
5 -7 2 5 -6 4
...
Perhatikan bahwa di atas saya menggunakan "fungsi" hanya dalam arti matematika. Anda dapat menulis fungsi atau program lengkap dalam bahasa pilihan Anda, selama itu membutuhkan satu bilangan bulat (ditandatangani) sebagai input dan mengembalikan bilangan bulat tunggal (ditandatangani). Seperti biasa, Anda dapat mengambil input melalui STDIN, argumen baris perintah, argumen fungsi dll. Dan output melalui STDOUT, nilai pengembalian fungsi atau argumen fungsi (keluar), dll.
Tentu saja, banyak bahasa tidak (dengan mudah) mendukung integer presisi sewenang-wenang. Tidak apa-apa jika implementasi Anda hanya bekerja pada kisaran jenis integer asli bahasa Anda, selama itu mencakup setidaknya kisaran [-127, 127] dan itu akan bekerja untuk bilangan bulat sewenang-wenang jika jenis bilangan bahasa diganti dengan arbitrary- bilangan bulat presisi.
Aturan standar kode-golf berlaku.