2

我有一个问题,我必须找到从锁上的一个位置到另一个位置的距离或刻度。例如,假设一个数字为 0 - 39 的密码锁,我想从 38 移动到 10,并得到 12,这是从 38 到 10 所需的刻度数。这可以设置为 (38 + x) mod 40 = 10,除了由于模运算而没有任何方法可以隔离 x。谁能想到一种方法来创建一个简单的公式来找到 38 到 10 之间有 12 个刻度。我知道如何使用条件分支来做到这一点,但如果可能的话,我更喜欢使用公式。

4

1 回答 1

2

有两种情况。

  1. “范围内”的距离
  2. 距离“溢出”

您需要计算两者并选择最小值。

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

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

于 2012-04-13T00:13:49.193 回答