我想这个解决方案很简单,但我已经考虑了一段时间,无法想出一个优雅的解决方案。
我有一系列数字,例如1..10 = (1,2,3,4,5,6,7,8,9,10)
,它是循环的,这意味着最后一个数字之后的数字又是第一个数字(next(10)=1
)。
对于范围内的给定数字i>0
,我想计算下一个m
和前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