Để chuẩn hóa một vectơ là chia tỷ lệ thành 1 ( vectơ đơn vị ), trong khi vẫn giữ hướng nhất quán.
Ví dụ, nếu chúng ta muốn bình thường hóa một vector với 3 thành phần, u , chúng tôi sẽ lần đầu tiên tìm thấy chiều dài của nó:
| u | = sqrt (u x 2 + u y 2 + u z 2 )
... Và sau đó chia tỷ lệ từng thành phần theo giá trị này để có được một vectơ có độ dài 1.
û = u ÷ | u |
Các thách thức
Nhiệm vụ của bạn là viết một chương trình hoặc hàm, đưa ra một danh sách các số nguyên đã ký không trống, diễn giải nó như một vectơ và chuẩn hóa nó. Điều này sẽ hoạt động cho bất kỳ số lượng kích thước nào, ví dụ (trường hợp kiểm tra được làm tròn đến hai chữ số thập phân):
[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]
Quy tắc:
- Bạn có thể giả sử danh sách đầu vào sẽ:
- Có ít nhất một yếu tố khác không
- Chỉ chứa các số trong phạm vi dấu phẩy động tiêu chuẩn của ngôn ngữ của bạn
- Đầu ra của bạn phải chính xác đến ít nhất hai chữ số thập phân . Trả lại các phân số / giá trị biểu tượng "chính xác vô hạn" cũng được cho phép, nếu đây là cách ngôn ngữ của bạn lưu trữ dữ liệu bên trong.
- Đệ trình phải là một chương trình đầy đủ thực hiện I / O hoặc một chức năng. Các chức năng đệ trình có thể trả về một danh sách mới hoặc sửa đổi danh sách đã cho.
- Các hàm / lớp dựng sẵn được cho phép. Ngoài ra, nếu ngôn ngữ của bạn có loại vectơ hỗ trợ số lượng kích thước tùy ý, bạn có thể lấy một trong các thứ nguyên này làm đầu vào.
Đây là một cuộc thi đánh gôn , vì vậy bạn nên đặt mục tiêu đạt được giải pháp ngắn nhất có thể (tính bằng byte).