🕌

ペアの数値の入った表を罫線入りで出力 Ruby編

2025/01/21に公開

https://paiza.jp/works/mondai/stdout_primer/stdout_primer__specific_format_step4

問題

自然数 H, W, A, B が与えられます。縦に H 行、横に W 行で計 H * W 個の (A, B) という形式の文字列を出力してください。ただし、横は | (半角スペース 2 つとバーティカルライン) 区切りで、縦は = で区切って出力してください。また、縦の文字列間で = を出力する際は、その上の行と文字数が等しくなるように出力します。

▼ 下記解答欄にコードを記入してみよう

入力される値
H W A B

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力
答えの文字列を出力してください。


(A_{1,1}, B_{1,1}) | (A_{1,2}, B_{1,2}) ... (A_{1,W}, B_{1,W})
=================== ... ====================
(A_{2,1}, B_{2,1}) | (A_{2,2}, B_{2,2}) ... (A_{2,W}, B_{2,W})
=================== ... ====================
...
...
...
=================== ... ====================
(A_{H,1}, B_{H,1}) | (A_{H,2}, B_{H,2}) ... (A_{H,W}, B_{H,W})

末尾に改行を入れ、余計な文字、空行を含んではいけません。
条件
すべてのテストケースにおいて、以下の条件をみたします。

  • H, W は 1 以上 100 以下
  • A, B は 0 以上 9 以下

入力例1
2 3 7 8

出力例1

(7, 8) | (7, 8) | (7, 8)
========================
(7, 8) | (7, 8) | (7, 8)

入力例2
3 2 0 0

出力例2

(0, 0) | (0, 0)
===============
(0, 0) | (0, 0)
===============
(0, 0) | (0, 0)

解答

# 標準入力から値を取得
H, W, A, B = gets.split.map(&:to_i)

# 1行分のデータを作成
row = Array.new(W, "(#{A}, #{B})").join(' | ')
separator = '=' * row.length

# 出力結果を生成
H.times do |i|
  puts row
  # 最後の行以外に区切りを出力。
  puts separator if i < H - 1
end

Discussion