ท้าทาย
คุณต้องสร้างโปรแกรมหรือฟังก์ชั่นที่ใช้จำนวนเต็มบวก N คำนวณคำศัพท์ N แรกของลำดับฟีโบนักชีในรูปแบบไบนารีต่อกันเป็นเลขฐานสองเดียวแปลงตัวเลขนั้นกลับเป็นทศนิยมจากนั้นจึงส่งทศนิยมเป็น จำนวนเต็ม.
ตัวอย่างเช่น
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
คุณไม่จำเป็นต้องเอาท์พุท->
เพียงแค่จำนวน (เช่นถ้าผู้ใช้พิมพ์4
เอาท์พุท14
) ลูกศรเป็นเพียงเพื่อช่วยอธิบายสิ่งที่โปรแกรมต้องทำ
กรณีทดสอบ
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
โปรแกรมจะต้องสามารถส่งออกถึงขีด จำกัด ของภาษาที่ใช้งานอยู่ ไม่อนุญาตให้ใช้ตารางการค้นหาหรือวิธีแก้ไขปัญหาทั่วไป
นี่คือโค้ดกอล์ฟดังนั้นคำตอบที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ!
int32_t binary_concat_Fib(int n)
ไลค์ซึ่งจะ จำกัด ผลลัพธ์ที่ได้ให้เป็น 2 ^ 31-1 นั่นคือคุณได้สมมุติว่าบิตที่ต่อกันพอดีพอดีกับจำนวนเต็ม หรือฟังก์ชั่นควรทำงานได้ถึงจุดที่จำนวนฟีโบนัชชีที่ใหญ่ที่สุดไม่พอดีกับจำนวนเต็มของมันเองดังนั้นการเชื่อมต่อบิตจึงมีความแม่นยำมากขึ้น?