paizaLvアップ問題と解答(標準入力3)Ruby

※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。

詳しくはコチラ

なるべくわかりやすい解説を付けました。

問題7   1行目で与えられる N 個の整数の入力 (large)

1 行目で、整数 N と、続けて N 個の整数 a_1, … , a_N が半角スペース区切りで与えられます。a_1, … , a_N を改行区切りで出力してください。

入力例1
5 8 1 3 1 3
出力例1
8
1
3
1
3

解答  .shiftで最初の配列を取り除いた後に出力

a = gets.split
a.shift
puts a

問題8 1 行目で与えられる N 個の実数の入力 (large)

1 行目で、整数 N と、続けて N 個の実数 a_1, … , a_N が半角スペース区切りで与えられます。a_1, … , a_N を改行区切りでそのまま出力してください。

入力例1
5 8.13 81.3 813 0.813 1.381
出力例1
8.13
81.3
813
0.813
1.381

解答 問題7とほぼ同じだが小数点なので.to_fで入力を受け取る。問題7と同じ答えでもOK

a = gets.split.map(&:to_f)
a.shift
puts a

問題9 行ごとに要素数の異なる整数列の入力

1 行目に整数 N が与えられます。
2 行目から (N + 1) 行目までの先頭に整数 M_i (1 ≦ i ≦ N) が与えられます。
それに続いて M_i 個の整数 a_1, …, a_{M_i} が与えられます。
上から i 番目、左から j 番目の整数は a_{i,j} です。
N 行の a_1, …, a_M をそのまま出力してください。

入力例1
3
1 8
2 8 1
3 8 1 3
出力例1
8
8 1
8 1 3

解答

  1. 入力Nを受け取る
  2. N回繰り返す
  3. 2行目,3行目,4行目の入力を受け取りaに代入
  4. 配列の最初の要素を出力したくないので、.shiftで0番目(初め)の配列を取り出す。
  5. .shiftは破壊的なので、配列の0番目が抜けた配列を.join(‘ ‘)でくっつける時に半角スペースを間に挿入する
n = gets.to_i

n.times do
  a = gets.split.map(&:to_i)
  m = a.shift
    puts a.join(' ')
end

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です