3D-Modellierungssoftware verwendet hauptsächlich UV-Mapping , um Texturen auf ein 3D-Objekt abzubilden. Die gültigen Werte für U und V liegen normalerweise in einem einschließlichen [0..1]Bereich.
Herausforderung
Sie haben eine neue 3D-Modellierungssoftware gekauft, die sehr einfach zu bedienen ist. Es gibt jedoch ein Problem: Es addiert oder subtrahiert eine zufällige ganze Zahl von UV-Werten. Ihre Aufgabe ist es, ein Programm oder eine Funktion zu erstellen, die einen Eingabewert ändert, um einen Gleitkommawert in einem inklusiven [0..1]Bereich zu erhalten.
Der resultierende Float sollte den gleichen Bruchteil wie das Original haben und so nah wie möglich am Original sein. Da beide 0und 1im Ausgabebereich liegen, sollten alle Ganzzahlen 0 oder weniger auf 0 und alle Ganzzahlen 1 oder mehr auf 1 geändert werden.
Ein Beispielalgorithmus in JavaScript:
function modFloat(input) {
while (input < 0 || input > 1) {
if (input < 0) input += 1;
if (input > 1) input -= 1;
}
return input;
}
Regeln
- Die Eingabe ist eine einzelne Ganzzahl oder ein Gleitkommawert. Jedes vernünftige Format ist zulässig, solange es in Ihrer Antwort angegeben ist.
- Die Ausgabe sollte eine dezimale Darstellung eines Gleitkommawerts sein.
- Die Ausgabegenauigkeit sollte mindestens die gleichen Dezimalstellen wie die Eingabe haben.
- Nachgestellte Nullen sind zulässig.
- Stellen Sie sicher, dass Ihr Code die 0 oder 1 für Ganzzahleingaben richtig auswählt.
Testfälle
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
Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
any reasonable input format is allowed, also würde ich sagen "Warum nicht?".