自然な言語を目指して

技術・日常をぐだぐだと

Rubyは変な子

酔いながら、なぜか居酒屋で競プロの問題を解いています。 PythonJavaが得意なのですが、最近Railsを始めた所なので、思い切ってRubyで競プロをしています。

AOJでほぼ最初のチュートリアルみたいなものなのですが、長方形の面積と週の長さを求めるプログラムがあります。


入力:3 4
出力:12 14

みたいなやつですね。

PythonJavaだったら、すぐ組めるこのプログラムなんですが、Rubyだと最適なプログラムを書こうとしたら結構悩みました。

input_value = gets.split("").to_i

とか

input_value = gets.split.to_i

とか 考えていたのですが、どうもエラーを吐きます。

最終的に

input_value_array = gets.split.map(&:to_i)
puts "#{input_value_array[0] * input_value_array[1]} #{(input_value_array[0] + input_value_array[1]) * 2}"

みたいなプログラムになりました。 文字列""の中で#{}を使うのもなかなか違和感ですが、注目すべきはsplitメソッドの後にmapメソッドを使うことで、配列のそれぞれの要素に対して、to_iメソッドを実行している所。

なかなかRubyもややこしい言語ですね。