paiza プログラミング

[Ruby|Python]paiza 標準出力メニュー 【改行あり出力】

paiza解説_stdout_prime_1

今回は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メソッドでインデックス i0 から 要素数−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メソッドnum1 から 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メソッドは引数の括弧が省略されがち。

今回は基本的な整数値の改行区切り出力を扱いました。

次は、数値の半角スペース区切り出力の問題です!



【PR】アルゴリズム学習でお世話になった本


アルゴリズム関連の技術書は大抵C/C++で書かれていますが、ある程度プログラムが出来れば、処理の流れは理解することが出来ます。






通称: 螺旋本。C++で解説されています。AOJ(Aizu Online Judge)を運営している会津大学の渡辺准教授が書いた本です。データ構造や計算量の内容から丁寧に書いてありますのでアルゴリズム学習の最初の参考書としてオススメです。







通称: 蟻本。C++で解説されています。競技プログラミング中級者の定番書と言われていて、競技プログラミングで利用できる色々なアルゴリズムを学ぶことが出来ます。かなり高度な内容も含まれているので1冊分を完全に理解するのにはかなりの時間がかかりそうですが、手元に置いて何度も読み返しています。







通称: チーター本。C#, C++, JAVAでTopcoderの問題を解説しています。初心者~中級者向けに書かれているので解説が非常に丁寧です。







Python3でアルゴリズムを解説している本です。講義スタイルの本で、図やフローチャートを使ってアルゴリズムとデータ構造についてしっかりと説明されています。代わりにコードは少なめです。Pythonコードが読めなくても十分理解できると思います。


-paiza, プログラミング
-

© 2024 じゃいごテック