คุณอาจเคยได้ยินหมายเลขฟีโบนักชี คุณรู้ไหมว่าลำดับเลขจำนวนเต็มที่ขึ้นต้นด้วย1, 1
จากนั้นแต่ละหมายเลขใหม่คือผลรวมของสองอันสุดท้าย?
1 1 2 3 5 8 13...
และอื่น ๆ ความท้าทายเกี่ยวกับตัวเลขฟีโบนักชีเป็นที่นิยมอย่างมากในรอบนี้ แต่ใครจะบอกว่าหมายเลขฟีโบนักชีต้องเริ่มด้วยกัน1, 1
? ทำไมพวกเขาไม่สามารถเริ่มต้นด้วย0, 1
? เอาล่ะเรากำหนดใหม่พวกเขาเพื่อเริ่มต้นที่ 0:
0 1 1 2 3 5 8 13...
แต่ ... เราไม่ต้องหยุดตรงนี้! หากเราสามารถเพิ่มตัวเลขสองตัวสุดท้ายเพื่อรับหมายเลขถัดไปเราสามารถลบหมายเลขแรกจากตัวเลขที่สองเพื่อเติมตัวเลขใหม่ ดังนั้นจึงอาจเริ่มต้นด้วย1, 0
:
1 0 1 1 2 3 5 8 13...
เราสามารถจบลงด้วยการปฏิเสธ:
-1 1 0 1 1 2 3 5 8 13...
และซีรีส์นี้ยังคงดำเนินต่อไปตลอดกาล ฉันคิดว่ามันน่าสนใจว่ามันจะสะท้อนหมายเลขฟีโบนัชชีแบบธรรมดาได้อย่างไรโดยที่ตัวเลขอื่น ๆ ทุกตัวเป็นลบ:
13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
ขอเรียกชุดนี้ "หมายเลข Fibonacci ขยาย" หรือEFN เนื่องจากไม่มีจำนวนลบที่ชัดเจนในการเริ่มต้นชุดนี้เราจะบอกว่า0ปรากฏที่0หมายเลข Fibonacci ปกติขยายเข้าสู่ดัชนีบวกและตัวเลขลบ Fibonacci (ลบครึ่ง) ในดัชนีลบอย่างเช่น:
Indices: ...-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 ...
Values: ...13 -8 5 -3 2 -1 1 0 1 1 2 3 5 8 13...
สิ่งนี้นำไปสู่ความท้าทายในปัจจุบัน:
รับจำนวนเต็มNส่งคืนดัชนีทุกตัวที่Nปรากฏในซีรีย์EFN
ข้อสังเกตแบบสุ่มในงานนี้:
1ปรากฏขึ้นอีกครั้งในEFNกว่าจำนวนอื่น ๆ
[-1, 1, 2]
: จะไม่มีหมายเลขปรากฏในมากกว่า 3 แห่งหมายเลข Fibonacci ทุกอัน> 1 จะปรากฏขึ้นหนึ่งครั้ง (3, 8, 21, ฯลฯ ) หรือสองครั้ง (2, 5, 13, ฯลฯ )
ชี้แจงกฎ:
- หาก
abs(N)
ไม่ใช่หมายเลขฟีโบนักชีหมายเลขนั้นจะไม่ปรากฏในซีรีย์EFNดังนั้นคุณจะต้องไม่แสดงผลใด ๆ / คอลเลกชันว่างเปล่าถ้าเป็นไปได้หรือถ้าเป็นไปไม่ได้ในภาษาของคุณคุณสามารถส่งออกค่าที่ไม่ใช่ตัวเลข - หากNปรากฏในหลาย ๆ ที่ในEFNเอาต์พุตของคุณไม่จำเป็นต้องเรียงลำดับ แม้ว่าแต่ละดัชนีจะต้องปรากฏอย่างแน่นอนครั้งเดียว
- แม้ว่าความท้าทายตามลำดับส่วนใหญ่จะช่วยให้คุณเลือกได้ว่าคุณต้องการใช้การจัดทำดัชนีแบบ 1 หรือ 0 ตามความท้าทายนี้ต้องใช้การจัดทำดัชนีที่อธิบายไว้ (ที่ 0 ปรากฏที่ 0)
- คุณสามารถนำ I / O ผ่านรูปแบบมาตรฐานใด ๆ
กรณีทดสอบ
-13: []
-12: []
-11: []
-10: []
-9: []
-8: [-6]
-7: []
-6: []
-5: []
-4: []
-3: [-4]
-2: []
-1: [-2]
0: 0
1: [-1, 1, 2]
2: [-3, 3]
3: [4]
4: []
5: [-5, 5]
6: []
7: []
8: [6]
9: []
10: []
11: []
12: []
13: [-7, 7]
และกรณีทดสอบที่ใหญ่กว่า:
89: [-11, 11]
1836311903: [46]
10000: []
-39088169: [-38]
ตามปกติคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ!