🔖
ペアの数値の入った表を罫線入りで出力 2 考え方
問題
自然数 H, W, A, B が与えられます。
縦に H 行、横に W 行で計 H * W 個の (A, B) という形式で文字列を出力してください。
ただし、横は | (半角スペース 2 つとバーティカルライン) 区切りで、縦は = で区切って出力してください。また、縦の文字列間で = を出力する際は、その上の行と文字数がそろうように出力します。また、A と B は 9 けたになるように半角スペースを数値の前(右詰め)に埋めて出力してください。
入力される値
h w a b
コードと考え方
# h w a b は半角スペース区切りで入力されるのでget.split.map(&:to_i)で入力値をそれぞれの変数に代入
h,w,a,b = gets.split.map(&:to_i)
# 指定された書式の`( a, b)`の文字列sを作成
s = "(#{"%9d" % a}, #{"%9d" % b})"
# sと | で構成された行を作成 sを[]で囲んで配列にする
row = ([s] * w).join(" | ") + "\n"
# 指定された区切り=をつけて表を完成させる
# =の数→sの文字数(18+4) * w個 = 22w + " | "の文字数3 * (w - 1)個
table = ([line] * h).join("=" * (25 * w -3) + "\n")
#出力
puts table
Discussion