İçin normalize bir vektör bir 1 uzunluğa (ölçeklemek için bir birim vektör tutarlı yönü tutarak).
Biz 3 bileşenleri ile bir vektör normalleştirmek istiyorsa Örneğin, u , öncelikle uzunluğunu bulur:
| u | = sqrt (u x 2 + u y 2 + u z 2 )
... ve daha sonra uzunluk 1 vektör elde etmek için her bileşeni bu değerle ölçeklendirin.
û = u ÷ | u |
Meydan okuma
Göreviniz, boş olmayan bir imzalı tamsayı listesi verilen, vektör olarak yorumlayan ve normalleştiren bir program veya işlev yazmaktır. Bu, herhangi bir sayıda boyut için çalışmalıdır, örneğin (iki ondalık basamağa yuvarlanmış test durumları):
[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]
Kurallar:
- Giriş listesinin şöyle olacağını varsayabilirsiniz:
- En az bir sıfır olmayan öğeye sahip
- Yalnızca kendi dilinizin standart kayan nokta aralığında sayılar içerir
- Çıktınız en az iki ondalık basamağa kadar doğru olmalıdır . Diliniz dahili olarak bu şekilde saklanıyorsa, "sonsuz hassasiyet" kesirlerine / sembolik değerlere geri dönülmesine de izin verilir.
- Gönderimler, G / Ç gerçekleştiren tam bir program veya bir işlev olmalıdır. İşlev gönderimleri yeni bir liste döndürebilir veya verilen listeyi değiştirebilir.
- Yerleşik vektör fonksiyonlarına / sınıflarına izin verilir. Ek olarak, eğer dilinizde isteğe bağlı sayıda boyutu destekleyen bir vektör tipi varsa, bunlardan birini girdi olarak alabilirsiniz.
Bu bir kod golf yarışması, bu yüzden mümkün olan en kısa çözümü (bayt cinsinden) elde etmeyi hedeflemelisiniz.