Ruby 入力の受け取り方
一行受け取る場合
x = gets
x はstringになるので、
x = gets.to_i
こうすることでxを数字にしてしまおう。
一行に半角を開けて複数の数値が並んでいる場合
入力で
2 3
こんな感じになっていて、それぞれを別の変数で取り扱いたいとき、
二つの数字を足すとか掛けるとかしたい時、
x, y= gets.split
あらかじめ二つの変数を用意しする。そうすれば2はxに3はyに格納される。
ここで、変数を1つにすると、
x = gets.split
xに2つとも格納される。
複数行受け取る場合
x = readlinesx.class
結果はArrayになる。このArrayの要素は改行込みのStringとなる。
入力が、
2
3
こんな感じで2行になっている場合、変数xはこんな内容
x = ["2\n", "3\n"]
xはArrayとなるので、要素一つ一つに何かしようとすると、eachを使って、書き換える必要がある。
x.each do |i| i.chomp.to_i end
こうすることでxの中の要素一つ一つが数字になる。
複数行を受け取る場合2
while line = gets
コード
end
こんなやり方もあるらしい。while endでくくった中に記述をするパターン
1行で複数個の数字を受け取る場合
x = gets.split(" ").map!{|i | i.to_i}
getsで受け取るとStringになるのでsplitで1文字づつ分けて受け取る。
splitで受け取ったものはArrayになるので、破壊的なmapを使って、1文字ずつIntegerに直す。そうするとxは数字の要素が含まれている配列になる。
あらかじめ、受け取る要素の数がわかっている場合は、
x, y = gets.split(" ").map!{|i| i.to_i}
x, y, z = gets.split(" ").map!{|i| i.to_i}
などとすることで直接、変数名で要素を指定できる。