I guess the solution for this is quite simple, but I've been thinking about it for a while and couldn't come up with an elegant solution.
I have a range of numbers, e.g. 1..10 = (1,2,3,4,5,6,7,8,9,10)
, which is circular, meaning the number after the last one is again the first one (next(10)=1
).
For a given number i>0
in the range, I would like to calculate the next m
-th, and previous m
-th number. e.g. next(5,1)=6
next(10,1)=1
next(10,2)=2
prev(5,2)=3
prev(1,1)=10
prev(1,2)=9
.
For next
I can just take (i+m)%n
where n
is the length of the range (n=10
in the example). But for prev
I couldn't find an elegant solution.