日別アーカイブ: 2022年8月20日

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

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

詳しくはコチラ

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

問題1 数値を半角スペース埋めで出力 (paizaランク D 相当)

自然数 N が与えられます。N が 3 けたになるよう数値の前に半角スペースを埋めて出力してください。

入力される値
N

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
答えの数値を解答の形式に従った形で出力してください。

N

末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件
すべてのテストケースにおいて、以下の条件をみたします。

* N は自然数
* N は 0 以上 999 以下

入力例1
12
出力例1
12
入力例2
0
出力例2
0

解答  putsを使う場合

#1行目の入力値(数値)を受け取る
n = gets.to_i
#半角スペースで埋めて3桁まで表示する
puts("%3d".%(n))

または  sprintfを使う場合

#1行目の入力値(数値)を受け取る
n = gets.to_i
#半角スペースで埋めて3桁まで表示する
puts sprintf("%3d",n)

問題2 数値をゼロ埋めで出力 (paizaランク D 相当)

自然数 N が与えられます。N が 3 けたになるよう数値の前に 0 を埋めて出力してください。

入力される値
N

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
答えの数値を出力してください。

N

末尾に改行を入れ、余計な文字、空行を含んではいけません。

条件
すべてのテストケースにおいて、以下の条件をみたします。

* N は自然数
* N は 0 以上 999 以下

入力例1
12
出力例1
012
入力例2
0
出力例2
000

解答  putsを使う場合  (問題1とほぼ同じ)

#1行目の入力値(数値)を受け取る
n = gets.to_i
#3桁まで0で埋めて表示する
puts("%03d".%(n))

または  sprintfを使う場合 (問題1とほぼ同じ)

#1行目の入力値(数値)を受け取る 
n = gets.to_i
#3桁まで0で埋めて表示する
puts sprintf("%03d",n)

問題3 複数の数値を半角スペース埋めで出力 (paizaランク D 相当)

自然数 N が与えられます。N 個の自然数が与えられるので、それぞれを数値 M_i について以下の処理を行ってください。
* M_i が 3 けたになるよう数値の前に半角スペースを埋めて出力してください。

入力される値
N
M_1
M_2
M_3
...
M_N

入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。

期待する出力
答えの数値を解答の形式に従った形で出力してください。

M_1
M_2
M_3
...
M_N

末尾に改行を入れ、余計な文字、空行を含んではいけません。条件

すべてのテストケースにおいて、以下の条件をみたします。

* N, M_iは自然数
* N は 0 以上 9,999 以下
* M_i は 0 以上 999 以下
入力例1
12
0
8
81
813
0
0
0
0
0
0
0
0
出力例1
0
8
81
813
0
0
0
0
0
0
0
0

解答

#1行目の入力値(数値)を受け取る
n = gets.to_i

#複数行の入力値を受け取り配列として代入していく↓
#["0", "8", "81", "813", "0", "0", "0", "0", "0", "0", "0", "0"]
numbers = readlines.map(&:chomp)


numbers.each do |i|
#半角スペースで埋めて3桁まで表示する 
  puts sprintf ("%3d".%(i))
end

または

n = gets.to_i
numbers = readlines.map(&:chomp)
#半角スペースで埋めて3桁まで表示する
numbers.each do |i|
puts ("%3d".%(i))
end