Le graphique de l'opération modulo ( ) ressemble à ceci:
Il s'agit d'une fonction très utile, car elle nous permet de créer un comportement "enveloppant". Cependant, c'est très lourd quand je veux l'utiliser pour créer une apparence de "rebond" entre deux murs. Le graphique de la fonction "rebond" ( ) ressemble à ceci:
La période du graphe de est . La période du graphique de est de , car elle monte vers le haut pour unités, puis descend vers le bas pour autres unités, avant de revenir à son point de départ. Pour les deux fonctions, la valeur minimale pour est 0 et la valeur maximale est (en fait, pour la fonction module avec entrées intégrales, c'est ). De plus, pour les deux fonctions, la valeur où est 0.k y = rebond ( x , k ) 2 k k k y k k - 1 x = 0
Le défi
Étant donné un entier et un entier positif , renvoyer une approximation entière ou à virgule flottante de .k y = rebond ( x , k )
Il s'agit de code-golf , donc la soumission valide la plus courte (comptée en octets) l'emporte.
Cas de test
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
Les points bonus pour une Fourier -Basé approche de Fourier .
k % k = 0
k
.