Mari kita mendefinisikan urutan Fibonacci sebagai
F(1) = 1
F(2) = 2
F(n) = F(n - 2) + F(n - 1)
Jadi kita memiliki urutan yang tak terbatas 1,2,3,5,8,13,
... Sudah diketahui bahwa bilangan bulat positif dapat ditulis sebagai jumlah dari beberapa angka Fibonacci. Satu-satunya peringatan adalah bahwa penjumlahan ini mungkin tidak unik. Selalu ada setidaknya satu cara untuk menulis angka sebagai jumlah angka Fibonacci tetapi mungkin ada banyak lagi.
Tantangan Anda adalah untuk menulis program lengkap yang menggunakan stdin mengambil bilangan bulat positif antara satu dan satu juta inklusif, dan kemudian output menggunakan stdout semua kemungkinan penjumlahan angka-angka Fibonacci yang menjumlahkan ke input. Dalam penjumlahan, angka-angka Fibonacci tidak boleh diulang dan itu termasuk angka 1
. Dalam penjumlahan apa pun, jika 1
ada, itu harus hadir hanya sekali karena dalam definisi saya urutan di atas 1
hanya muncul sekali. Penjumlahan dengan satu-satunya istilah adalah valid sehingga jika nomor input adalah angka Fibonacci itu sendiri, maka angka itu sendiri adalah penjumlahan yang valid dan harus dicetak. Jika banyak jumlah, maka di antara dua jumlah mana pun harus ada garis kosong agar mudah dibedakan di antara keduanya.
Berikut ini beberapa contohnya.
./myfib 1
1
Hanya ada satu jumlah seperti itu dan hanya memiliki jangka waktu sehingga hanya itu yang dicetak.
./myfib 2
2
Perhatikan di sini bahwa 1+1
ini bukan jumlah yang valid karena 1
berulang.
./myfib 3
1+2
3
Dua jumlah dan keduanya dicetak dengan garis kosong di antaranya.
./myfib 10
2+8
2+3+5
./myfib 100
3+8+89
1+2+8+89
3+8+34+55
1+2+3+5+89
1+2+8+34+55
3+8+13+21+55
1+2+3+5+34+55
1+2+8+13+21+55
1+2+3+5+13+21+55
Golf kode sejati. Kode terpendek dalam bahasa apa pun menang. Silakan kirim kode Anda dengan beberapa test case (selain yang saya berikan di atas). Dalam hal ikatan, saya memilih yang dengan upvotes tertinggi setelah menunggu setidaknya selama dua minggu dan mungkin lebih lama. Jadi komunitas jangan ragu untuk mengunggah solusi yang Anda suka. Kecerdasan / keindahan kode jauh lebih penting daripada siapa yang memposting terlebih dahulu.
Selamat coding!