paizaLvアップ問題と解答(標準出力14)Ruby

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

詳しくはコチラ

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

問題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(' ') }

コメントを残す

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