Wykres operacji modulo ( ) wygląda następująco:
Jest to bardzo przydatna funkcja, ponieważ pozwala nam tworzyć zachowanie „zawijające”. Jest to jednak bardzo kłopotliwe, gdy chcę go użyć do stworzenia efektu „odbijania się” między dwiema ścianami. Wykres funkcji „odbicia” ( ) wygląda następująco:
Okres od wykresu znaczy . Okres wykresu wynosi , ponieważ przesuwa się w górę o jednostek, a następnie przesuwa się w dół o kolejne jednostek, zanim powróci do miejsca, w którym się zaczął. W przypadku obu funkcji minimalna wartość dla wynosi 0, a maksymalna to (w rzeczywistości dla funkcji modułu ze zintegrowanymi wejściami jest to ). Ponadto dla obu funkcji wartość, gdzie wynosi 0.k y = odbicie ( x , k ) 2 k k k y k k - 1 x = 0
Wyzwanie
Biorąc pod uwagę liczbę całkowitą i dodatnią liczbę całkowitą , zwróć przybliżoną liczbę całkowitą lub zmiennoprzecinkową .k y = odbicie ( x , k )
To jest golf golfowy , więc wygrywa najkrótsze prawidłowe zgłoszenie (liczone w bajtach).
Przypadki testowe
x, k -> bounce(x, k)
0, 14 -> 0
3, 7 -> 3
14, 14 -> 14
15, 14 -> 13
-13, 14 -> 13 (12.999997 etc would be an acceptable answer)
-14, 14 -> 14
191, 8 -> 1
192, 8 -> 0
k % k = 0
k.

