AA 折れ線グラフクイズ 6
id:sumim:20060406:p5 からの続き。hirofummy さんの Haskell 版を Squeak の Smalltalk で書き直した最後の版を、こんどは Ruby で直訳気味に。 これを Ruby らしく書き直すのに必要な Ruby 力は、恥ずかしながら私には備わっていません。w
#!/usr/local/bin/ruby series = ARGV[0] lines = Array.new curr = 0 add = proc do |chr| lines.each_with_index do |line,idx| line.insert(0, idx == curr - 1 ? chr : " ") end end series.reverse.split(//).each do |code| if code == "R" then lines << "" if (curr += 1) > lines.size add.call("/") else if curr == 0 then lines.insert(0, "") curr = 1 end case code when "F" add.call("\\") curr -= 1 when "C" add.call("_") end end end puts lines