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