Il grafico dell'operazione modulo ( ) è simile al seguente:
Questa è una funzione molto utile, in quanto ci consente di creare un comportamento "avvolgente". Tuttavia, è molto ingombrante quando voglio usarlo per creare un aspetto di "rimbalzo" tra due pareti. Il grafico della funzione "rimbalzo" ( ) è simile al seguente:
Il periodo del grafico di è . Il periodo del grafico di è , perché si sposta verso l'alto per unità, quindi si sposta verso il basso per altre unità, prima di tornare al punto di partenza. Per entrambe le funzioni, il valore minimo per è 0 e il massimo è (in realtà, per la funzione del modulo con ingressi integrati, è ). Inoltre, per entrambe le funzioni, il valore in cui è 0.k y = rimbalzo ( x , k ) 2 k k k y k k - 1 x = 0
La sfida
Dato un intero e un intero positivo , restituisce un'approssimazione di numeri interi o in virgola mobile di .k y = rimbalzo ( x , k )
Questo è code-golf , quindi vince l'invio valido più breve (conteggiato in byte).
Casi 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
k % k = 0
k
.