Программное обеспечение для 3D-моделирования в основном использует UV Mapping для наложения текстур на 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
, так что я бы сказал: «Почему бы и нет?».