หมายเหตุ: นี่คือ # 3 ในชุดของความท้าทายการจัดการอาร์เรย์ สำหรับความท้าทายก่อนหน้านี้คลิกที่นี่
ค่าเฉลี่ยเคลื่อนที่ของรายการ
ค่าเฉลี่ยเคลื่อนที่ของรายการคือการคำนวณผลในใหม่เรียบออกรายการที่สร้างขึ้นโดยเฉลี่ย sublists ที่ทับซ้อนกันเล็ก ๆ ของเดิม
เมื่อสร้างค่าเฉลี่ยเคลื่อนที่อันดับแรกเราจะสร้างรายการของรายการย่อยที่ทับซ้อนกันโดยใช้ 'ขนาดหน้าต่าง' ที่แน่นอนเลื่อนหน้าต่างนี้ไปทางขวาหนึ่งครั้งในแต่ละครั้ง
ตัวอย่างเช่นเมื่อกำหนดรายการ[8, 4, 6, 2, 2, 4]
และขนาดหน้าต่าง3
รายการย่อยจะเป็น:
[8, 4, 6, 2, 2, 4] Sublists:
( ) <- [8, 4, 6]
( ) <- [4, 6, 2]
( ) <- [6, 2, 2]
( ) <- [2, 2, 4]
จากนั้นเราคำนวณค่าเฉลี่ยเฉลี่ยของแต่ละรายการย่อยเพื่อให้ได้ผลลัพธ์: [6.0, 4.0, 3.3, 2.7]
(แต่ละค่าจะปัดเป็นทศนิยมหนึ่งตำแหน่ง)
ความท้าทาย
งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นที่ได้รับรายชื่อLและจำนวนเต็ม1 ≤ n ≤ยาว (L)คำนวณค่าเฉลี่ยเคลื่อนที่สำหรับLโดยใช้ขนาดของหน้าต่างn
กฎ:
- โปรแกรมของคุณอาจใช้การแบ่งจำนวนเต็มหรือการหารแบบลอย ในกรณีของการแบ่งลอยอนุญาตให้มีข้อผิดพลาดเล็ก ๆ เนื่องจากข้อ จำกัด ของชนิดข้อมูลตราบใดที่ค่านั้นถูกต้อง
- คุณสามารถส่งโปรแกรมเต็มรูปแบบหรือฟังก์ชั่น (แต่ไม่ใช่ตัวอย่าง)
- คุณอาจคิดว่ารายการจะมีจำนวนเต็มบวกเท่านั้น
- ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม
- นี่คือโค้ดกอล์ฟดังนั้นคำตอบที่สั้นที่สุด (เป็นไบต์) ชนะ!
กรณีทดสอบ
โปรดทราบว่าเพื่อความสะดวกในการอ่านค่าทั้งหมดจะถูกปัดเศษเป็นทศนิยมหนึ่งตำแหน่ง
n=5, [1, 2, 3, 4, 5, 6, 7, 8] -> [3, 4, 5, 6]
n=3, [100, 502, 350, 223, 195] -> [317.3, 358.3, 256]
n=1, [10, 10, 10] -> [10, 10, 10]
n=3, [10, 20, 30] -> [20]
n=2, [90, 40, 45, 100, 101] -> [65, 42.5, 72.5, 100.5]