🔖

文字列と N 個の整数の出力 自分の考え方

2023/09/29に公開

問題文

自然数 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