Думаю, решение для этого довольно простое, но я некоторое время думал об этом и не смог придумать элегантного решения.
У меня есть диапазон чисел, например 1..10 = (1,2,3,4, 5,6,7,8,9,10)
, который является круглым, означает, что число после последнего снова является первым ( next (10) = 1
).
Для данного числа i> 0
в диапазоне, я хотел бы для вычисления следующего m
-го и предыдущего m
-го числа. например следующий (5,1) = 6
следующий (10,1) = 1
следующий (10,2) = 2
предыдущий (5,2) = 3
предыдущий ( 1,1) = 10
prev (1,2) = 9
.
Для next
я могу просто взять (i + m)% n
, где n
- длина диапазона (в примере n = 10
). Но для prev
я не смог найти элегантного решения.