※スキルチェック問題ではありません。
規約により公式の解答コードそのままはよろしくないので、
オリジナルのコードにしています。
詳しくはコチラ
なるべくわかりやすい解説を付けました。
問題3 九九表の出力 (paizaランク D 相当)
九九表を出力してください。具体的には、出力のi行j列目 (1 ≦ i, j ≦ 9) の数値は i * j になるように出力してください。
ただし、数値の間には半角スペースを、各行の末尾には、半角スペースの代わりに改行を入れてください。
- 入力される値
- 入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
- 期待する出力
- 答えの数値を出力してください。
1 2 3 4 5 ... 2 4 6 8 ... 3 6 9 ... ... 9 18 27 ... 81
末尾に改行を入れ、余計な文字、空行を含んではいけません。
- 条件
- なし
解答
#空の配列を作成 answer = [] #9回繰り返す 9.times do |i| #9回繰り返す 9.times do |j| # 1 * 1, 1 * 2, 1 * 3, 1 * 4, 1 * 5, 1 * 6, 1 * 7, 1 * 8, 1 * 9, # 2 * 1, 2 * 2, 2 * 3・・・,と計算結果を配列に挿入していく。 answer << (i + 1) * (j + 1) end end # .each_slice(9).to_aで9この長さで分割していく ary = answer.each_slice(9).to_a # 9個ずつ出力する(このとき半角スペースを間に挟んで結合する) ary.size.times { |i| puts ary[i].join(' ') }
FINAL問題【n * n の 2 次元配列の表示】N * N の九九表の出力 (paizaランク C 相当)
自然数 N が入力されます。N 行 N 列の九九表を出力してください。具体的には、出力の i 行 j 列目 (1 ≦ i, j ≦ N ) の数値は i * j になるように出力してください。
ただし、数値の間には半角スペースを、各行の末尾には、半角スペースの代わりに改行を入れてください。
- 入力される値
-
N
入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。
- 期待する出力
- 答えの数値を出力してください。
A_{1,1} A_{1,2} A_{1,3} ... A_{1,N} A_{2,1} A_{2,2} A_{2,3} ... A_{2,N} ... A_{N,1} A_{N,2} ... A_{N,N}
末尾に改行を入れ、余計な文字、空行を含んではいけません。
- 条件
- すべてのテストケースにおいて、以下の条件をみたします。
* 1 ≦ N ≦ 100
- 入力例1
-
3
- 出力例1
-
1 2 3 2 4 6 3 6 9
解答 問題3を少し変えるだけで良い
# 入力値(数値)を受け取る n = gets.to_i #空の配列を作成 answer = [] #n回繰り返す n.times do |i| #n回繰り返す n.times do |j| answer << (i + 1) * (j + 1) end end # .each_slice(n).to_aでn個の長さで分割していく ary = answer.each_slice(n).to_a # 9個ずつ出力する(このとき半角スペースを間に挟んで結合する) ary.size.times { |i| puts ary[i].join(' ') }