El software de modelado 3D utiliza principalmente el mapeo UV para mapear texturas en un objeto 3D. Los valores válidos para U y V generalmente se encuentran en un [0..1]rango inclusivo .
Desafío
Usted compró un nuevo software de modelado 3D que es súper fácil de usar. Sin embargo, hay un problema: agrega o resta un número entero aleatorio de los valores UV. Su tarea es crear un programa o una función que modifique un valor de entrada para obtener un valor flotante en un [0..1]rango inclusivo .
El flotador resultante debe tener la misma parte fraccional que el original y estar lo más cerca posible del original. Debido a que ambos 0y 1están en el rango de salida, cualquier número entero 0 o menos debería cambiar a 0, y cualquier número entero 1 o mayor debería cambiar a 1.
Un algoritmo de ejemplo en JavaScript:
function modFloat(input) {
while (input < 0 || input > 1) {
if (input < 0) input += 1;
if (input > 1) input -= 1;
}
return input;
}
Reglas
- La entrada es un entero único o valor flotante. Se permite cualquier formato razonable siempre que se especifique en su respuesta.
- La salida debe ser una representación decimal de un valor flotante.
- La precisión de salida debe ser al menos los mismos lugares decimales que la entrada.
- Se permiten ceros finales.
- Asegúrese de que su código elija correctamente cuál de 0 o 1 para generar entradas enteras.
Casos de prueba
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
Este es el código de golf , por lo que gana el código más corto en bytes.
any reasonable input format is allowed, así que diría "¿Por qué no?".