ベクトルを正規化するとは、方向を一定に保ちながら、長さ1(単位ベクトル)にスケーリングすることです。
たとえば、3つの成分uでベクトルを正規化する場合、最初にその長さを見つけます。
| u | = sqrt(u x 2 + u y 2 + u z 2)
...次に、各コンポーネントをこの値でスケーリングして、長さ1のベクトルを取得します。
û= u÷| u |
チャレンジ
あなたの仕事は、署名された整数の空でないリストを与えられ、それをベクトルとして解釈し、それを正規化するプログラムまたは関数を書くことです。これは、たとえば、任意の数のディメンションで機能するはずです(テストケースを小数点以下2桁に丸める)。
[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]
ルール:
- 入力リストは次のようになります。
- 少なくとも1つの非ゼロ要素がある
- 言語の標準浮動小数点範囲内の数字のみを含む
- 出力は、少なくとも 小数点以下2桁まで正確でなければなりません。言語がデータを内部的に保存する方法であれば、「無限精度」の小数/記号値を返すこともできます。
- 提出は、I / Oを実行する完全なプログラム、または機能のいずれかでなければなりません。関数を送信すると、新しいリストが返されるか、所定のリストが変更されます。
- 組み込みのベクトル関数/クラスが許可されています。さらに、言語に任意の次元数をサポートするベクトル型がある場合、これらのいずれかを入力として使用できます。
これはコードとゴルフのコンテストですので、可能な限り最短のソリューション(バイト単位)を達成することを目指してください。