为了正常化的载体是将它扩展到1的长度(单位矢量),同时保持方向一致。
例如,如果我们想正常化的矢量3个组件,ü,我们会先找到它的长度:
| u | = 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的完整程序或功能。函数提交可以返回新列表,也可以就地修改给定列表。
- 允许内置向量函数/类。此外,如果您的语言具有支持任意数量维的向量类型,则可以将其中之一作为输入。
这是一场代码高尔夫球比赛,因此您应该力求实现最短的解决方案(以字节为单位)。