Програмне забезпечення для 3D-моделювання в основному використовує УФ-карти для відображення текстур на 3D-об'єкт. Дійсні значення як для U, так і для V зазвичай знаходяться в інклюзивному [0..1]діапазоні.
Виклик
Ви придбали нове програмне забезпечення для 3D-моделювання, яке дуже просте у використанні. Однак з цим є одна проблема: вона додає або віднімає випадкове ціле число від УФ-значень. Ваше завдання - створити програму або функцію, яка модифікує вхідне значення, щоб отримати значення поплавця в інклюзивному [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, тому я б сказав "Чому ні?".