🔖
文字列と N 個の整数の出力 自分の考え方
問題文
自然数 N, A, B が与えられます。(A, B) という形式の文字列を N 回、カンマと半角スペース区切りで出力してください。
入力される値
N A B
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
自分の解答
n, a, b = gets.split.map(&:to_i)
# (a, b) の形で配列に入れたいので変数に入れる
s = "(#{a}, #{b})"
# joinで連結して出力したいので空の配列を用意する
array = []
#n回配列に変数sを入れて完成した配列をjoin(', ')で結合
n.times {array.push(s)}
puts array.join(', ')
一行目 自分用補足
n,a,b = gets.split.map(&:to_i)
半角スペース区切りで入力されるので、半角スペース部で区切った配列を作成。
splitだけだとstringクラスのままなので.map(&:to_i)でintegerクラスへ変更
.map
→配列の各要素に処理を行って新しい配列を作るメソッド
(&:to_i)
について解釈としては
&でブロックを引数として受け取り、ブロックとして呼び出したいメソッドに:(シンボル)をつける。
※ブロック →eachなどメソッド呼び出し後の do ~ end,(または{})の部分
これで半角スペースとして入力された値を数字の配列にできる
例: n a b → [n, a, b]
簡潔な書き方
n, a, b = gets.split.map(&:to_i)
puts (["(#{a}, #{b})"] * n).join(", ")
反省点
別に空の配列を用意しなくても作りたい配列は作れた
Discussion