3D建模软件主要使用UV贴图将纹理映射到3D对象上。U和V的有效值通常位于一个包含[0..1]范围内。
挑战
您购买了一个超级易于使用的新3D建模软件。但是,它有一个问题:它会从UV值中添加或减去一个随机整数。您的任务是创建一个程序或函数,以修改输入值以获取包含[0..1]范围内的浮点值。
生成的浮点数应与原始浮点数相同,并尽可能接近原始浮点。因为0和1都在输出范围内,所以0或更小的整数应更改为0,1或更大的整数应更改为1。
JavaScript中的示例算法:
function modFloat(input) {
while (input < 0 || input > 1) {
if (input < 0) input += 1;
if (input > 1) input -= 1;
}
return input;
}
规则
- 输入是单个整数或浮点值。只要您的答案中指定了任何合理的格式。
- 输出应为浮点值的十进制表示。
- 输出精度应至少等于输入的小数位。
- 允许尾随零。
- 确保您的代码正确选择要为整数输入输出的0或1。
测试用例
Input | Output
------------+---------
-4 | 0
-1 | 0
0 | 0
1 | 1
2 | 1
1.0001 | 0.000100
678.123456 | 0.123456
-678.123456 | 0.876544
4.5 | 0.5
这是代码高尔夫球,因此以字节为单位的最短代码胜出!
any reasonable input format is allowed,所以我会说“为什么不呢?”。