今回はpaiza 標準入力メニューセクション1【改行あり出力】を解説します。
セクション1は、指定された整数値を改行区切りで出力する問題です。
本記事で使用しているメソッドについて
解答例で使っているメソッドについて、下記の記事で詳しく解説していますので参考にしてみて下さい。
セクション1:【改行あり出力】
1-STEP1: 1 行の出力 (paizaランク D 相当)
整数値 813 を1行で出力する問題です。
Ruby解答例1
putsメソッドで出力します。
# 解答例1 n = 813 # 出力 puts(n)
Ruby解答例2
Rubyではメソッド引数の括弧 () は省略することができます。中でもputsメソッドの括弧はよく省略されますので慣れておくと良いと思います。(統一性がなくて申し訳ないですが、当ブログ内でも括弧の有無が混在しています。)
# 解答例2 n = 813 # 出力 puts n
Ruby解答例3
数値型なら、pメソッドでも正しく出力できます。
# 解答例3 n = 813 # 出力 p(n)
Ruby解答例4
pメソッドもよく括弧が省略されます。
# 解答例4 n = 813 # 出力 p n
Python解答例
printメソッドで出力します。
# 解答例 n = 813 # 出力 print(n)
1-STEP2: 2 行の出力 (paizaランク D 相当)
2個の整数 8, 13 を改行区切りで出力する問題です。
Ruby解答例
putsメソッドを2回実行して 8 と 13 を出力します。
# 解答例 n1 = 8 n2 = 13 # 出力 puts(n1) puts(n2)
Python解答例
# 解答例 n1 = 8 n2 = 13 # 出力 print(n1) print(n2)
1-STEP3: 3 行の出力 (paizaランク D 相当)
3個の整数 8, 1, 3 を改行区切りで出力する問題です。
Ruby解答例
putsメソッドを3回実行して 8 と 1 と 3 を出力します。
# 解答例 n1 = 8 n2 = 1 n3 = 3 # 出力 puts(n1) puts(n2) puts(n3)
Python解答例
# 解答例 n1 = 8 n2 = 1 n3 = 3 # 出力 print(n1) print(n2) print(n3)
1-STEP4: 10 行の出力 (paizaランク D 相当)
10個の整数 813, 1, 2, 923874, 23648, 782356, 3256, 2342, 24324, 112 を改行区切りで出力する問題です。
Ruby解答例1
putsメソッドの引数に配列を与えると、要素を改行区切りで出力します。
# 解答例1 ary = [813, 1, 2, 923874, 23648, 782356, 3256, 2342, 24324, 112] # 出力 puts(ary)
Ruby解答例2
eachメソッドでaryの先頭から順に要素を参照し、putsメソッドで出力します。
# 解答例2 ary = [813, 1, 2, 923874, 23648, 782356, 3256, 2342, 24324, 112] # 出力 ary.each do |n| puts(n) end
Ruby解答例3
uptoメソッドでインデックス i を 0 から 要素数−1 まで1ずつ増やしながら ary[i] を出力します。
# 解答例3 ary = [813, 1, 2, 923874, 23648, 782356, 3256, 2342, 24324, 112] # 出力 0.upto(ary.length - 1).each do |i| puts(ary[i]) end
Ruby NG解答例
pメソッドの引数に配列を与えると、改行区切りではなく、配列をそのまま出力します。
# NG 解答例 ary = [813, 1, 2, 923874, 23648, 782356, 3256, 2342, 24324, 112] p(ary) # 配列のまま表示される # > [813, 1, 2, 923874, 23648, 782356, 3256, 2342, 24324, 112]
Python解答例1
リスト内包表記を使うとスマートに書けます。
# 解答例1 ary = [813, 1, 2, 923874, 23648, 782356, 3256, 2342, 24324, 112] # 出力 [print(num) for num in ary]
Python解答例2
リスト内包表記に慣れていなければこちらでも。
# 解答例2 ary = [813, 1, 2, 923874, 23648, 782356, 3256, 2342, 24324, 112] # 出力 for num in ary: print(num)
Python解答例3
インデックスを使う書き方です。
# 解答例3 ary = [813, 1, 2, 923874, 23648, 782356, 3256, 2342, 24324, 112] # 出力 for i in range(len(ary)): print(ary[i])
1-FINAL: 【改行あり出力】1,000 行の出力 (paizaランク D 相当)
1 から 1000 までの整数を改行区切りで出力する問題です。
Ruby解答例1
putsメソッドの引数に 1 から 1000 までの整数の配列aryを与えて各要素を改行区切りで出力します。
# 解答例1 # 1 から 1000 までの配列 ary を作成 # ary = [1, 2, 3, ... 998, 999, 1000] ary = (1..1000).to_a # 出力 puts(ary)
Ruby解答例2
uptoメソッドで num を 1 から 1000 まで1ずつ増やしながら繰り返し、num を出力します。
# 解答例2 # 出力 1.upto(1000) do |num| puts(num) end
Python解答例1
Ruby解答例1 をpython風に翻訳しました。
# 解答例1 # 1 から 1000 までの配列 ary を作成 # ary = [1, 2, 3, ... 998, 999, 1000] ary = list(range(1, 1001)) # 出力 [print(num) for num in ary]
Python解答例2
Ruby解答例2 をpython風に翻訳しました。
# 解答例2 # 出力 for num in range(1, 1001): print(num)
今回のまとめ
- (基本的に)実装・デバッグ時の確認はpメソッド、出力時はputsメソッドを使う。
- putsメソッドの引数に配列を与えると、各要素が改行区切りで出力される。
- putsメソッドは引数の括弧が省略されがち。
今回は基本的な整数値の改行区切り出力を扱いました。
次は、数値の半角スペース区切り出力の問題です!