※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。
詳しくはコチラ
なるべくわかりやすい解説を付けました。
問題3 3 行 M 列の整数の入力 (paizaランク D 相当)
1 行目で整数 M が与えられます。
2 行目以降で 3 行 M 列の行列が与えられます。上から i 番目、左から j 番目の整数は a_{i,j} です。
3 行 M 列の行列をそのまま出力してください。
- 入力される値
- 1 行目で整数 M が与えられます。
 2 行目以降で 3 行 M 列の行列が与えられます。
 以下の形式で標準入力によって与えられます。M a_{1,1} ... a_{1,M} a_{2,1} ... a_{2,M} a_{3,1} ... a_{3,M}入力値最終行の末尾に改行が1つ入ります。 
 文字列は標準入力から渡されます。
- 期待する出力
- 3 行 M 列の行列をそのまま出力してください。
 また、末尾に改行を入れ、余計な文字、空行を含んではいけません。a_{1,1} ... a_{1,M} a_{2,1} ... a_{2,M} a_{3,1} ... a_{3,M}
- 条件
- 
すべてのテストケースにおいて、以下の条件をみたします。 ・M は 1 以上 100 以下の整数 ・a_{i,j} は 1 以上 100 以下の整数 (1 ≦ i ≦ 3, 1 ≦ j ≦ M)
- 入力例1
- 
5 1 2 3 4 5 8 1 3 8 1 813 138 381 183 831 
- 出力例1
- 
1 2 3 4 5 8 1 3 8 1 813 138 381 183 831 
解答
#1行目の入力値(数値)を受け取る
n = gets.to_i
#半角スペース刻みの入力値を受け取り、半角スペース刻みで数値として出力する
readlines.map{ |i| puts i.split.map(&:to_i).join(' ')}
または
#1行目の入力値(数値)を受け取る n = gets.to_i #半角スペース刻みの入力値を受け取り、半角スペース刻みで文字列として出力する puts readlines.map(&:chomp)
問題4 N 行 M 列の整数の入力 (paizaランク D 相当)
1 行目で整数 N と整数 M が与えられます。
2 行目以降で N 行 M 列の行列が与えられます。上から i 番目、左から j 番目の整数は a_{i,j} です。
N 行 M 列の行列をそのまま出力してください。
- 入力される値
- 1 行目で整数 N と整数 M が与えられます。
 2 行目以降で N 行 M 列の行列が与えられます。
 以下の形式で標準入力によって与えられます。N M a_{1,1} ... a_{1,M} ... ... a_{N,1} ... a_{N,M}入力値最終行の末尾に改行が1つ入ります。 
 文字列は標準入力から渡されます。
- 期待する出力
- N 行 M 列の行列をそのまま出力してください。
 また、末尾に改行を入れ、余計な文字、空行を含んではいけません。a_{1,1} ... a_{1,M} ... ... a_{N,1} ... a_{N,M}
- 条件
- 
すべてのテストケースにおいて、以下の条件をみたします。 ・N, M は 1 以上 100 以下の整数 ・a_{i,j} は 1 以上 100 以下の整数 (1 ≦ i ≦ N, 1 ≦ j ≦ M)
- 入力例1
- 
2 3 1 2 3 8 1 3 
- 出力例1
- 
1 2 3 8 1 3 
解答
#1行目の半角スペース刻みの入力値を受け取る
n, m = gets.split.map(&:to_i)
#半角スペース刻みの入力値を受け取り、半角スペース刻みで数値として出力する
readlines.map{ |i| puts i.split.map(&:to_i).join(' ')}
または
#1行目の半角スペース刻みの入力値を受け取る n, m = gets.split.map(&:to_i) #半角スペース刻みの入力値を受け取り、半角スペース刻みで数値として出力する puts readlines.map(&:chomp)
FINAL問題【N 行 M 列のデータの入力】行ごとに要素数の異なる整数列の入力 (paizaランク D 相当)
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 行目で整数 N が与えられます。
 2 行目以降で N 行 M_i + 1 列の行列が与えられます。
 以下の形式で標準入力によって与えられます。N M_1 a_{1,1} ... a_{1,M_1} ... ... M_N a_{N,1} ... a_{N,M_N}入力値最終行の末尾に改行が1つ入ります。 
 文字列は標準入力から渡されます。
- 期待する出力
- N 行 M_i 列の行列をそのまま出力してください。
 また、末尾に改行を入れ、余計な文字、空行を含んではいけません。a_{1,1} ... a_{1,M_1} ... ... a_{N,1} ... a_{N,M_N}
- 条件
- 
すべてのテストケースにおいて、以下の条件をみたします。 ・N, M_i は 1 以上 100 以下の整数 ・a_{i,j} は 1 以上 100 以下の整数 (1 ≦ i ≦ N, 1 ≦ j ≦ M)
- 入力例1
- 
3 1 8 2 8 1 3 8 1 3 
- 出力例1
- 
8 8 1 8 1 3 
解答 .shiftを使うと配列の先頭部分を取り除くことができる
# 1行目の半角スペース刻みの入力値を受け取る
n = gets.to_i
# n回繰り返す
n.times do 
# 半角スペース刻みの入力値を受け取る
  numbers = gets.split
# 配列の最初の部分を取り出す(破壊的)
  numbers.shift
# 配列を半角スペース刻みで出力する
  puts numbers.join(' ')
end
					