のトレーニング問題3.7.4.2を解いてみました。
(1..100).each do |x| print "#{x} → " y = x until y == 1 if y.even? y /= 2 else y = y * 3 + 1 end print "#{y} → " end puts 'OK!' if y == 1 end
$ ruby collatz.rb 1 → OK! 2 → 1 → OK! 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 → OK! 4 → 2 → 1 → OK! 5 → 16 → 8 → 4 → 2 → 1 → OK! 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 → OK! 7 → 22 → 11 → 34 → 17 → 52 → 26 → 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 → OK! 8 → 4 → 2 → 1 → OK! 9 → 28 → 14 → 7 → 22 → 11 → 34 → 17 → 52 → 26 → 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 → OK! 10 → 5 → 16 → 8 → 4 → 2 → 1 → OK! (以下略)