Untuk menormalkan suatu vektor berarti menskalakannya menjadi panjang 1 ( vektor satuan ), sambil menjaga arahnya konsisten.
Misalnya, jika kita ingin menormalkan vektor dengan 3 komponen, u , pertama-tama kita akan menemukan panjangnya:
| u | = sqrt (u x 2 + u y 2 + u z 2 )
... dan kemudian skala setiap komponen dengan nilai ini untuk mendapatkan vektor panjang 1.
û = u ÷ | u |
Tantangan
Tugas Anda adalah menulis sebuah program atau fungsi yang, mengingat daftar bilangan bulat yang tidak kosong, menafsirkannya sebagai vektor, dan menormalkannya. Ini harus bekerja untuk sejumlah dimensi, misalnya (kasus uji dibulatkan ke dua tempat desimal):
[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]
Aturan:
- Anda dapat mengasumsikan daftar input akan:
- Memiliki setidaknya satu elemen yang tidak nol
- Hanya berisi angka dalam rentang titik mengambang standar bahasa Anda
- Output Anda harus akurat untuk setidaknya dua tempat desimal . Mengembalikan nilai fraksi / nilai simbolik "presisi tak terbatas" juga diperbolehkan, jika ini adalah cara bahasa Anda menyimpan data secara internal.
- Pengajuan harus berupa program lengkap yang menjalankan I / O, atau suatu fungsi. Pengajuan fungsi dapat mengembalikan daftar baru, atau mengubah daftar yang diberikan di tempat.
- Fungsi / kelas vektor bawaan diizinkan. Selain itu, jika bahasa Anda memiliki jenis vektor yang mendukung jumlah dimensi yang berubah-ubah, Anda dapat mengambil salah satunya sebagai input.
Ini adalah kontes kode-golf , jadi Anda harus berusaha mencapai solusi sesingkat mungkin (dalam byte).