Le logiciel de modélisation 3D utilise principalement UV Mapping pour cartographier les textures sur un objet 3D. Les valeurs valides pour U et V sont généralement situées dans une [0..1]plage inclusive .
Défi
Vous avez acheté un nouveau logiciel de modélisation 3D extrêmement simple à utiliser. Cependant, il y a un problème: il ajoute ou soustrait un nombre entier aléatoire des valeurs UV. Votre tâche consiste à créer un programme ou une fonction qui modifie une valeur d'entrée pour obtenir une valeur flottante dans une [0..1]plage inclusive .
Le flotteur résultant doit avoir la même partie fractionnaire que l'original et être aussi proche que possible de l'original. Étant donné que les deux 0et se 1trouvent dans la plage de sortie, tous les entiers 0 ou moins doivent passer à 0 et tous les entiers 1 ou supérieur doivent passer à 1.
Un exemple d'algorithme en JavaScript:
function modFloat(input) {
while (input < 0 || input > 1) {
if (input < 0) input += 1;
if (input > 1) input -= 1;
}
return input;
}
Règles
- L'entrée est un entier ou une valeur flottante unique. Tout format raisonnable est autorisé tant qu'il est spécifié dans votre réponse.
- La sortie doit être une représentation décimale d'une valeur flottante.
- La précision de sortie doit être au moins égale à la même décimale que l'entrée.
- Les zéros de fin sont autorisés.
- Assurez-vous que votre code choisit correctement celui de 0 ou 1 à afficher pour les entrées entières.
Cas de test
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
C'est le code-golf , donc le code le plus court en octets gagne!
any reasonable input format is allowed, donc je dirais "Pourquoi pas?".