せかいや

いまいるここを、おもしろく http://sekai-in-the-box.appspot.com/

【Ruby】【アルゴリズム】重複組み合わせ。師匠Ver

重複組み合わせはFor文でシンプルに書けてすごい!
と書いていたら師匠からメールが来た。

■以前のコード

i = 0
while i < 10
  j = i
  while j < 10
      k = j
      while k < 10
        m = k
        while m < 10
          result << "#{i},#{j},#{k},#{m}"
          m += 1
        end
        k += 1
      end
    j += 1
  end
  i += 1
end
p result.length


■師匠のメール

(1..9).each do |i|
  (i..9).each do |j|
    (j..9).each do |k|
      (k..9).each do |m|
        result << "#{i},#{j},#{k},#{m}"
      end
    end
  end
end
終わってくれることが保障されてるし、
制御変数を意識せんでいいしね。


なるほど!

確かにこのインクリメント変数、不細工だな~って思ってたんだよね。
それによく、インクリメントする値を「0」にtypoしてしまうし↓

m = 0
while m < 10
  p "hoge"
  m += 0  ←コレ
end

初期値を0と書くから、つられてインクリメントも「0」って書いちゃうんだよね。


ぷっ(自分でウケてる)


一つ賢くなった!