พื้นหลัง
พวกคุณส่วนใหญ่รู้ว่าหมายเลขฟีโบนักชีคืออะไร บางท่านอาจจะรู้ว่าจำนวนเต็มบวกทั้งหมดสามารถแสดงเป็นผลรวมของหนึ่งหรือตัวเลข Fibonacci ที่แตกต่างกันมากขึ้นตามZeckendorf ทฤษฎีบท หากจำนวนเงื่อนไขในการแทนค่า Zeckendorf ที่ดีที่สุดของจำนวนเต็มn
นั้นเป็นหมายเลขฟีโบนักชีเราจะเรียกn
ฟีโบนักชี "แอบ"
ตัวอย่างเช่น:
139 = 89 + 34 + 13 + 3
This is a total of 4 integers. Since 4 is not a Fibonacci number, 139 is not secretly Fibonacci
140 = 89 + 34 + 13 + 3 + 1
This is a total of 5 integers. Since 5 is a Fibonacci number, 140 is secretly Fibonacci
หมายเหตุ
- ตัวแทน Zeckendorf ที่ดีที่สุดสามารถพบได้โดยใช้อัลกอริทึมโลภ เพียงใช้จำนวนฟีโบนักชีที่ใหญ่ที่สุด <= n และลบออกจาก n จนกว่าคุณจะถึง 0
- หมายเลข Fibonacci ทั้งหมดสามารถแสดงเป็นผลรวมของ 1 หมายเลข Fibonacci (ตัวมันเอง) เนื่องจาก 1 คือหมายเลขฟีโบนักชีหมายเลขฟีโบนักชีทั้งหมดจึงเป็นฟีโบนักชีอย่างลับๆ
ท้าทาย
ความท้าทายของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้จำนวนเต็มและส่งกลับว่าจำนวนเต็มนั้นเป็นฟีโบนักชีหรือไม่
อินพุต
คุณสามารถป้อนข้อมูลในรูปแบบที่เหมาะสม คุณอาจสันนิษฐานว่าการป้อนข้อมูลจะเป็นจำนวนเต็มบวกเดียว
เอาท์พุต
เอาต์พุตหนึ่งในสองผลลัพธ์ที่แตกต่างกันสำหรับการป้อนข้อมูลว่าเป็นฟีโบนักชีหรือไม่ ตัวอย่าง ได้แก่True
/ False
, 1
/ 0
, ฯลฯ
เกณฑ์การให้คะแนน
นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ! ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
กรณีทดสอบ
Truthy (secretly Fibonacci)
1
2
4
50
140
300099
Falsey (NOT secretly Fibonacci)
33
53
54
139
118808