การทำเวกเตอร์ให้เป็นมาตรฐานคือการปรับสเกลให้มีความยาว 1 ( เวกเตอร์หน่วย ) ในขณะที่ทำให้ทิศทางสอดคล้อง
ตัวอย่างเช่นถ้าเราต้องการทำให้เวกเตอร์เป็นมาตรฐานด้วย 3 องค์ประกอบคุณจะพบความยาวก่อน:
| ยู | = sqrt (u x 2 + u y 2 + u z 2 )
... และจากนั้นปรับขนาดส่วนประกอบแต่ละส่วนด้วยค่านี้เพื่อให้มีความยาว 1 เวกเตอร์
û = u ÷ | u |
ความท้าทาย
งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่นซึ่งได้รับรายการที่ไม่ว่างของจำนวนเต็มที่ลงนามแล้วตีความมันเป็นเวกเตอร์และทำให้เป็นปกติ สิ่งนี้ควรใช้ได้กับทุกขนาดเช่น (กรณีทดสอบปัดเศษเป็นทศนิยมสองตำแหน่ง):
[20] -> [1]
[-5] -> [-1]
[-3, 0] -> [-1, 0]
[5.5, 6, -3.5] -> [0.62, 0.68, -0.40]
[3, 4, -5, -6] -> [0.32, 0.43, -0.54, -0.65]
[0, 0, 5, 0] -> [0, 0, 1, 0]
กฎ:
- คุณสามารถสันนิษฐานว่ารายการอินพุตจะ:
- มีองค์ประกอบที่ไม่เป็นศูนย์อย่างน้อยหนึ่งรายการ
- มีตัวเลขอยู่ในช่วงจุดลอยตัวมาตรฐานของภาษาของคุณ
- การส่งออกของคุณควรจะถูกต้องอย่างน้อย ทศนิยมสองตำแหน่ง อนุญาตให้มีการคืนค่าเศษส่วน / สัญลักษณ์ "ความแม่นยำไม่สิ้นสุด" หากนี่คือวิธีที่ภาษาของคุณจัดเก็บข้อมูลภายใน
- การส่งควรเป็นโปรแกรมเต็มรูปแบบซึ่งดำเนินการ I / O หรือฟังก์ชั่น การส่งฟังก์ชั่นสามารถส่งคืนรายการใหม่หรือแก้ไขรายการที่กำหนด
- อนุญาตให้ใช้ฟังก์ชัน / คลาสเวกเตอร์ในตัว นอกจากนี้หากภาษาของคุณมีประเภทเวกเตอร์ที่รองรับจำนวนมิติโดยพลการคุณสามารถใช้หนึ่งในสิ่งเหล่านี้เป็นอินพุต
นี่เป็นการแข่งขันรหัส - กอล์ฟดังนั้นคุณควรตั้งเป้าหมายที่จะแก้ปัญหาให้สั้นที่สุดเท่าที่จะทำได้ (เป็นไบต์)