Oprogramowanie do modelowania 3D wykorzystuje głównie mapowanie UV do mapowania tekstur na obiekcie 3D. Prawidłowe wartości zarówno dla U, jak i V znajdują się zwykle w [0..1]zakresie obejmującym .
Wyzwanie
Kupiłeś nowe oprogramowanie do modelowania 3D, które jest bardzo łatwe w użyciu. Jest jednak jeden problem: dodaje lub odejmuje losową liczbę całkowitą od wartości UV. Twoim zadaniem jest utworzenie programu lub funkcji, która modyfikuje wartość wejściową, aby uzyskać wartość zmiennoprzecinkową w [0..1]zakresie obejmującym .
Wynikowa liczba zmiennoprzecinkowa powinna mieć tę samą część ułamkową co oryginał i znajdować się jak najbliżej oryginału. Ponieważ oba 0i 1są w zakresie mocy, wszystkie liczby całkowite 0 lub mniej należy zmienić na 0, a wszystkie liczby całkowite 1 lub więcej należy zmienić na 1.
Przykładowy algorytm w JavaScript:
function modFloat(input) {
while (input < 0 || input > 1) {
if (input < 0) input += 1;
if (input > 1) input -= 1;
}
return input;
}
Zasady
- Dane wejściowe to jedna liczba całkowita lub zmiennoprzecinkowa. Dowolny rozsądny format jest dozwolony, o ile jest określony w odpowiedzi.
- Dane wyjściowe powinny być dziesiętną reprezentacją wartości zmiennoprzecinkowej.
- Dokładność wyjściowa powinna wynosić co najmniej te same miejsca dziesiętne co dane wejściowe.
- Zera końcowe są dozwolone.
- Upewnij się, że kod poprawnie wybiera, który z 0 lub 1 ma być wyprowadzany dla liczb całkowitych.
Przypadki testowe
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
To jest golf golfowy , więc wygrywa najkrótszy kod w bajtach!
any reasonable input format is allowed, więc powiedziałbym „dlaczego nie?”.