2

12 エントリの配列があります。

するとき、配列12+1のエントリを取得したい1

するとき、配列12+4のエントリを取得したい4

等...

私は終わった

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

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

moduloで解決策を見つけました

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 に答える