พื้นหลัง
ทุกคนส่วนใหญ่คุ้นเคยกับตัวเลขฟีโบนักชี F(n) :
0, 1, 1, 2, 3, 5, 8, 13, 21 ...
เหล่านี้จะเกิดขึ้นจากฟังก์ชั่นเรียกซ้ำตัวเองF(n) = F(n-1) + F(n-2)ด้วยและF(0)=0 A000045F(1)=1
ลำดับที่เกี่ยวข้องอย่างใกล้ชิดคือหมายเลข Lucas L(m) :
2, 1, 3, 4, 7, 11, 18, 29 ...
เหล่านี้จะเกิดขึ้นจากฟังก์ชั่นเรียกซ้ำตัวเองL(m) = L(m-1) + L(m-2)ด้วยและL(0)=2 A000032L(1)=1
เราสามารถสลับระหว่างสองลำดับขึ้นอยู่กับดัชนีคู่ / คี่กับการก่อสร้าง
A(x) = F(x)ถ้าx mod 2 = 0และเป็นA(x) = L(x)อย่างอื่น ตัวอย่างเช่นA(4)มีค่าเท่ากับตั้งแต่F(4) 4 mod 2 = 0เราจะเรียกลำดับนี้เบอร์ Lucas-nacci , A(x):
0, 1, 1, 4, 3, 11, 8, 29, 21, 76 ...
นี้สามารถเกิดขึ้นจากฟังก์ชั่นเรียกซ้ำตัวเองA(x) = 3*A(x-2) - A(x-4)ด้วยA(0)=0, A(1)=1, และA(2)=1 A005013A(3)=4
ท้าทาย
รับอินพุตnส่งออกลำดับของn+1ตัวเลขถึงและรวมถึงA(n)ตามที่อธิบายไว้ข้างต้น ไบต์น้อยที่สุด (หรือไบต์เทียบเท่าเช่นLabVIEWตามที่กำหนดเป็นรายบุคคลใน Meta) ชนะ
อินพุต
nจำนวนเต็มไม่เป็นลบเดียว
เอาท์พุต
รายการของตัวเลขที่สอดคล้องกับ subsequence ของตัวเลข Lucas-nacci จากไปA(0) A(n)รายการจะต้องอยู่ในลำดับตามที่อธิบายไว้ข้างต้น
กฎระเบียบ
- กฎของรหัสกอล์ฟมาตรฐานและข้อ จำกัด ทางหนีใช้
- ใช้กฎอินพุต / เอาต์พุตมาตรฐาน
- หมายเลขอินพุตสามารถอยู่ในรูปแบบที่เหมาะสม: unary หรือทศนิยมอ่านจาก STDIN ฟังก์ชันหรืออาร์กิวเมนต์บรรทัดคำสั่ง ฯลฯ - ตัวเลือกของคุณ
- เอาต์พุตสามารถพิมพ์ไปที่ STDOUT หรือส่งคืนเป็นผลมาจากการเรียกใช้ฟังก์ชัน หากพิมพ์ตัวคั่นที่เหมาะสมเพื่อแยกความแตกต่างจะต้องรวมอยู่ด้วย (คั่นด้วยช่องว่างคั่นด้วยเครื่องหมายจุลภาค ฯลฯ )
- นอกจากนี้หากเอาต์พุตไปยัง STDOUT, ช่องว่างโดยรอบ, การขึ้นบรรทัดใหม่, ฯลฯ จะเป็นตัวเลือกทั้งหมด
- หากอินพุตเป็นจำนวนเต็มที่ไม่ใช่หรือจำนวนเต็มลบโปรแกรมสามารถทำอะไรก็ได้หรืออะไรก็ได้เนื่องจากพฤติกรรมไม่ได้กำหนดไว้
ตัวอย่าง
Input -> Output
0 -> 0
5 -> 0, 1, 1, 4, 3, 11
18 -> 0, 1, 1, 4, 3, 11, 8, 29, 21, 76, 55, 199, 144, 521, 377, 1364, 987, 3571, 2584