Tantangan
Anda perlu membuat program atau fungsi yang mengambil dalam bilangan bulat positif N, menghitung persyaratan N pertama dari urutan Fibonacci dalam biner, menggabungkannya menjadi angka biner tunggal, mengonversi angka itu kembali ke desimal, dan kemudian mengeluarkan desimal sebagai sebuah bilangan bulat.
Sebagai contoh
1 -> [0] -> 0 to decimal outputs 0
3 -> [0, 1, 1] -> 011 to decimal outputs 3
4 -> [0, 1, 1, 10] -> 01110 to decimal outputs 14
Anda tidak perlu menampilkan ->
, hanya nomornya (mis. Jika pengguna mengetik4
, cukup keluaran 14
). Panah hanya untuk membantu menjelaskan apa yang harus dilakukan program.
Uji kasus
1 -> 0
2 -> 1
3 -> 3
4 -> 14
5 -> 59
6 -> 477
7 -> 7640
8 -> 122253
9 -> 3912117
10 -> 250375522
11 -> 16024033463
12 -> 2051076283353
13 -> 525075528538512
14 -> 134419335305859305
15 -> 68822699676599964537
16 -> 70474444468838363686498
17 -> 72165831136090484414974939
18 -> 147795622166713312081868676669
19 -> 605370868394857726287334099638808
20 -> 4959198153890674493745840944241119317
Program harus dapat menampilkan hingga batas bahasa yang digunakan. Tidak ada tabel pencarian atau solusi umum diizinkan.
Ini kode-golf , jadi jawabannya dengan jumlah byte terpendek menang!
int32_t binary_concat_Fib(int n)
, yang akan membatasi nilai output yang dihasilkan menjadi 2 ^ 31-1. yaitu Anda bisa mengasumsikan semua bit gabungan cocok dalam bilangan bulat. Atau haruskah fungsi bekerja sampai pada titik di mana angka Fibonacci terbesar tidak muat dalam bilangan bulat sendiri, jadi menggabungkan bit membutuhkan presisi yang diperluas?