计算组合锁定距离的有效方法

时间:2012-04-12 23:40:26

标签: locking combinations formula

我有一个问题,我必须找到从锁上的一个位置到另一个位置的距离或刻度。例如,假设一个数字0 - 39的组合锁,我想从38移动到10,得到12,这是从38到10获得的滴答数。这可以设置为(38 + x)mod 40 = 10,除了由于模数运算而没有任何方法可以隔离x。任何人都可以想出一种方法来创建一个简单的公式,找到在38和10之间有12个刻度。我知道如何使用条件分支,但我更愿意使用公式,如果可能。

1 个答案:

答案 0 :(得分:2)

有两种情况。

  1. 距离“范围内”
  2. 距离“溢出”
  3. 您需要计算两者并选择最小值。

    min((to-from) mod 40, (from-to) mod 40)
    

    更新:以前的版本在每种情况下都不起作用(例如从1到25)。当前版本总是返回最便宜的刻度,但没有方向(无符号)。