Я думаю, что решение для этого довольно простое, но я некоторое время думал об этом и не мог придумать элегантное решение.
У меня есть ряд чисел, например. 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 я не мог найти элегантное решение.