ฉันได้เลื่อนดูไซต์นี้มาระยะหนึ่งแล้ว แต่เพิ่งได้รับความสนใจจริง ๆ ลองใช้ความท้าทายบางอย่าง ฉันตั้งใจจะลองทำตามหัวข้อที่มีอยู่ในสนามกอล์ฟ แต่ฉันไม่สามารถใช้อินเทอร์เน็ตได้สักพักหนึ่งเมื่อวานนี้และในระหว่างนี้ฉันก็นึกถึงความท้าทายของตัวเอง
งานของคุณคือการสร้างโปรแกรมหรือฟังก์ชั่นที่รับอาร์เรย์ของ Floats a
และจำนวนเต็มn
จากนั้นตั้งค่าแต่ละค่าa
เป็นค่าเฉลี่ยของทั้งสองข้างโดยคูณด้วยn
เวลา เมื่อใช้ซ้ำ ๆ กับการเพิ่มค่าของn
สิ่งนี้จะสร้างการเคลื่อนไหวคล้ายคลื่น:
ข้อมูลจำเพาะ:
- หากเกิดขึ้นมีเพียงหนึ่งรายการใน
a
หรือถ้าn
เป็น 0 หรือน้อยกว่าโปรแกรมควรกลับอาร์เรย์เดิม - อินพุตและเอาต์พุตสามารถอยู่ในรูปแบบที่คุณต้องการตราบใดที่แยกออกจากกันอย่างชัดเจน
สำหรับแต่ละขั้นตอน:
- รายการแรกใน
a
ควรกลายเป็นค่าเฉลี่ยของตัวเองและรายการถัดไป - รายการสุดท้ายใน
a
ควรกลายเป็นค่าเฉลี่ยของตัวเองและรายการก่อนหน้า - รายการอื่น ๆ ใน
a
ควรเป็นค่าเฉลี่ยของรายการก่อนหน้าและรายการถัดไป - ตรวจสอบให้แน่ใจว่าคุณกำลังคำนวณอาเรย์ของขั้นตอนก่อนหน้าและไม่ใช่อาเรย์ปัจจุบัน
กรณีทดสอบ: หมายเหตุ: อินพุต / เอาต์พุตของคุณไม่จำเป็นต้องอยู่ในรูปแบบนี้!
[0, 0, 1, 0, 0], 1 -> [0, 0.5, 0, 0.5, 0]
[0, 0, 1, 0, 0], 2 -> [0.25, 0, 0.5, 0, 0.25]
[0, 0, 1, 0, 0], 0 -> [0, 0, 1, 0, 0]
[0, 0, 1, 0, 0], -39 -> [0, 0, 1, 0, 0]
[0, 16, 32, 16, 0], 1 -> [8, 16, 16, 16, 8]
[0, 1, 2, 3, 4, 5], 1 -> [0.5, 1, 2, 3, 4, 4.5]
[0, 64], 1 -> [32, 32]
[0], 482 -> [0]
[32, 32, 32, 16, 64, 16, 32, 32, 32], 4 -> [33, 27, 40, 22, 44, 22, 40, 27, 33]
นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในจำนวนไบต์ชนะ ผู้ชนะจะได้รับการคัดเลือกในหนึ่งสัปดาห์ (วันที่ 1 สิงหาคม) โชคดี!
แก้ไข:ขอแสดงความยินดีกับผู้ชนะ@issacg ที่มีขนาด18 ไบต์!
n
ควรเป็น 4 ไม่ใช่ 5
n
ไม่ได้จัดจำหน่ายและa
ไม่ได้ระบุกรณี - พวกเขาไม่ได้เพิ่มอะไรมาก