График операции по модулю ( ) выглядит следующим образом:
Это очень полезная функция, так как она позволяет нам создавать поведение «обтекания». Тем не менее, это очень громоздко, когда я хочу использовать его, чтобы создать видимость "подпрыгивания" между двумя стенами. График функции "bounce" ( ) выглядит следующим образом:
Период графика есть . Период графика равен , потому что он перемещается вверх на единиц, а затем движется вниз на другие единиц, прежде чем вернуться к тому, с чего начал. Для обеих функций минимальное значение для равно 0, а максимальное равно (на самом деле для функции модуля со встроенными входами это ). Кроме того, для обеих функций значение равно 0.k y = отскок ( x , k ) 2 k k k y k k - 1 x = 0
Соревнование
Если задано целое число и положительное целое число , вернуть целочисленное значение или приближение с плавающей запятой для .к у = отказов ( х , к )
Это код-гольф , поэтому выигрывает самая короткая действительная заявка (в байтах).
Тестовые случаи
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
.