※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。
詳しくはコチラ
なるべくわかりやすい解説を付けました。
問題1 3 行 3 列の整数の入力 (paizaランク D 相当)
3 行 3 列の行列が与えられます。上から i 番目、左から j 番目の整数は a_{i,j} です。
3 行 3 列の行列をそのまま出力してください。
入力される値
- 3 行 3 列の行列が以下の形式で標準入力によって与えられます。
a_{1,1} a_{1,2} a_{1,3} a_{2,1} a_{2,2} a_{2,3} a_{3,1} a_{3,2} a_{3,3}
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
- 期待する出力
- 3 行 3 列の行列をそのまま出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。a_{1,1} a_{1,2} a_{1,3} a_{2,1} a_{2,2} a_{2,3} a_{3,1} a_{3,2} a_{3,3}
- 条件
-
すべてのテストケースにおいて、以下の条件をみたします。 ・a_{i,j} は 1 以上 100 以下の整数 (1 ≦ i ≦ 3, 1 ≦ j ≦ 3)
- 入力例1
-
8 1 3 1 2 3 3 1 8
- 出力例1
-
8 1 3 1 2 3 3 1 8
解答
# ↓一行ずつ半角スペース刻みの入力値を受け取り変数に配列として代入していく
#[[8, 1, 3], [1, 2, 3], [3, 1, 8]]
numbers = readlines.map{ |i| i.split.map(&:to_i)} # 配列の長さ分(3)繰り返し半角スペース刻みで出力する。 numbers.size.times { |i| puts numbers[i].join(' ') }
または
# 一行ずつ半角スペース刻みの入力値を受け取り,出力する。 puts numbers = readlines
または
# 一行ずつ半角スペース刻みの入力値を受け取り、半角スペース刻みで出力する。 numbers = readlines.map{ |i| i.split.map(&:to_i).join(' ') }
または
# 3列と決まっているので3回繰り返す # 半角スペース刻みの入力値を受け取り半角スペース刻みで出力する 3.times { puts gets.split.map(&:to_i).join(' ') }
問題2 N 行 3 列の整数の入力 (paizaランク D 相当)
1 行目で整数 N が与えられます。
2 行目以降で N 行 3 列の行列が与えられます。上から i 番目、左から j 番目の整数は a_{i,j} です。
N 行 3 列の行列をそのまま出力してください。
- 入力される値
- 1 行目に整数 N が与えられます。
2 行目以降に N 行 3 列の行列が与えられます。
以下の形式で標準入力によって与えられます。N a_{1,1} a_{1,2} a_{1,3} ... a_{N,1} a_{N,2} a_{N,3}
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
- 期待する出力
- N 行 3 列の行列をそのまま出力してください。
また、末尾に改行を入れ、余計な文字、空行を含んではいけません。a_{1,1} a_{1,2} a_{1,3} ... a_{N,1} a_{N,2} a_{N,3}
- 条件
-
すべてのテストケースにおいて、以下の条件をみたします。 ・N は 1 以上 100 以下の整数 ・a_{i,j} は 1 以上 100 以下の整数 (1 ≦ i ≦ N, 1 ≦ j ≦ 3)
- 入力例1
-
2 1 2 3 8 1 3
- 出力例1
-
1 2 3 8 1 3
解答
#1行目の入力値(数値)を受け取る n = gets.to_i #半角スペース刻みの入力値を受け取り、半角スペース刻みで出力することをn回繰り返す n.times { puts gets.split.map(&:to_i).join(' ') }
または
#1行目の入力値(数値)を受け取る n = gets.to_i #半角スペース刻みの入力値を受け取り、半角スペース刻みで出力する readlines.map{ |i| puts i.split(' ').map(&:to_i).join(' ')}