ksino's diary

覚えたことを忘れないように、小さなことでも書いていく。

コラッツの問題をRubyで実装してみる

勉強がてら書いてみる。

def collatz
  count = 0 
  func = Proc.new do |n| 
    if n == 1 then
      count
    else
      count += 1
      if n.even? then
        func.call(n / 2)
      else
        func.call(n * 3 + 1)
      end 
    end 
  end 
end
(2..10000).each do |i| 
  puts collatz.call(i)
end

恥ずかしながらクロージャって理解できてないんだけど、、、こんな感じなんだろうか。。