我有一个问题,我必须找到从锁上的一个位置到另一个位置的距离或刻度。例如,假设一个数字0 - 39的组合锁,我想从38移动到10,得到12,这是从38到10获得的滴答数。这可以设置为(38 + x)mod 40 = 10,除了由于模数运算而没有任何方法可以隔离x。任何人都可以想出一种方法来创建一个简单的公式,找到在38和10之间有12个刻度。我知道如何使用条件分支,但我更愿意使用公式,如果可能。
答案 0 :(得分:2)
有两种情况。
您需要计算两者并选择最小值。
min((to-from) mod 40, (from-to) mod 40)
更新:以前的版本在每种情况下都不起作用(例如从1到25)。当前版本总是返回最便宜的刻度,但没有方向(无符号)。