※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。
詳しくはコチラ
なるべくわかりやすい解説を付けました。
問題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