2

我有一个包含 12 个条目的数组。

这样做时12+1,我想获取1数组的条目

这样做时12+4,我想获取4数组的条目

ETC...

我已经完成了

cases_to_increment.each do |k|
  if k > 12
    k = k-12
  end

  self.inc(:"case#{k}", 1)
end

我找到了一个模数的解决方案

k = 13%12 = 1
k = 16%12 = 4

我喜欢取模的方式,但 12%12 返回 0,我只需要 1..12 之间的数字

有没有办法无条件做到这一点?

4

1 回答 1

0

你几乎自己就有了解决方案。而不是简单的模数,请尝试:

index = (number % 12) + 1

编辑:njzk2 是正确的,如果您使用的值不是 2 的幂,那么取模是一个非常昂贵的函数。但是,如果您的元素总数(您正在模化的数字)是 2 的幂,则计算基本上是免费的。

于 2013-08-22T11:49:52.077 回答