今回はpaiza 標準入力メニューセクション2【半角スペース区切りの出力】を解説します。
セクション2は、指定された整数値を半角スペース区切りで出力する問題です。
本記事で使用しているメソッドについて
解答例で使っているメソッドについて、下記の記事で詳しく解説していますので参考にしてみて下さい。
セクション2:【半角スペース区切りの出力】
2-STEP1: 2 つの数値を出力 (paizaランク D 相当)
2個の整数 1, 1 を半角スペース区切りで出力する問題です。
Ruby解答例1
式展開を使って文字列の中に変数の値を埋め込み、putsメソッドで出力しています。
式展開では数値は自動的に文字列に変換されるので、to_sメソッドは必要ありません。
# 解答例1 n1 = 1 n2 = 1 # 出力 puts("#{n1} #{n2}")
Ruby解答例2
to_sメソッドで整数を文字列に変換してから、 + で文字列を連結して出力しています。
# 解答例2 n1 = 1 n2 = 1 # 文字列に変換 s1 = n1.to_s s2 = n2.to_s # 出力 puts(s1 + " " + s2)
Python解答例1
f文字列を使って、文字列の中に変数の値を埋め込み、printメソッドで出力しています。
# 解答例1 n1 = 1 n2 = 1 # 出力 print(f"{n1} {n2}")
Python解答例2
strメソッドで整数を文字列に変換してから、 + で文字列を連結して出力しています。
# 解答例2 n1 = 1 n2 = 1 # 文字列に変換 s1 = str(n1) s2 = str(n2) # 出力 print(s1 + " " + s2)
2-STEP2: 3 つの数値を出力 (paizaランク D 相当)
3個の整数 8, 1, 3 を半角スペース区切りで出力する問題です。
Ruby解答例1
式展開を使って文字列の中に変数の値を埋め込み、putsメソッドで出力しています。(STEP1と同じ解き方)
# 解答例1 n1 = 8 n2 = 1 n3 = 3 # 出力 puts("#{n1} #{n2} #{n3}")
Ruby解答例2
to_sメソッドで整数を文字列に変換してから、 + で文字列を連結して出力しています。(STEP1と同じ解き方)
# 解答例2 n1 = 8 n2 = 1 n3 = 3 # 文字列に変換 s1 = n1.to_s s2 = n2.to_s s3 = n3.to_s # 出力 puts(s1 + " " + s2 + " " + s3)
Python解答例1
f文字列を使って、文字列の中に変数の値を埋め込み、printメソッドで出力しています。(STEP1と同じ解き方)
# 解答例1 n1 = 8 n2 = 1 n3 = 3 # 出力 print(f"{n1} {n2} {n3}")
Python解答例2
strメソッドで整数を文字列に変換してから、 + で文字列を連結して出力しています。
# 解答例2 n1 = 8 n2 = 1 n3 = 3 # 文字列に変換 s1 = str(n1) s2 = str(n2) s3 = str(n3) # 出力 print(s1 + " " + s2 + " " + s3)
2-STEP3: 10 個の数値を出力 (末尾に半角スペース有) (paizaランク D 相当)
1 から 10 までの整数の後ろに半角スペースを追加して連結し、1行で出力する問題です。
※ 末尾に半角スペースが入ります。
Ruby解答例1
要素が 1 から 10 の配列aryを作成し、joinメソッドで配列aryの各要素を半角スペースで連結、末尾に半角スペースを追加して出力しています。
# 解答例1 # 1 から 10 までの配列 ary を作成 # ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ary = (1..10).to_a # 出力 (末尾に半角スペース有) puts(ary.join(" ") + " ")
Ruby解答例2
要素が 1 から 10 の配列aryと空の文字列sを作成し、配列aryの先頭から順に参照して文字列に変換して、半角スペースと一緒に文字列sに追加しています。
# 解答例2 # 1 から 10 までの配列 ary を作成 ary = (1..10).to_a # 配列 ary の先頭から順に文字列に変換して半角スペースを追加して # 文字列 s に追加する (末尾に半角スペース有) s = "" ary.each do |num| s += num.to_s + " " end # 出力 puts(s)
Python解答例1
要素が 1 から 10 の配列aryを作成し、joinメソッドで配列aryの各要素を文字列に変換して半角スペースで連結、末尾に半角スペースを追加して出力しています。
# 解答例1 # 1 から 10 までの配列 ary を作成 # ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ary = list(range(1, 11)) # 出力 (末尾に半角スペース有) print(" ".join(map(str, ary)) + " ")
Python解答例2
要素が 1 から 10 の配列aryと空の文字列sを作成し、配列aryの先頭から順に参照して文字列に変換して、半角スペースと一緒に文字列sに追加しています。
# 解答例2 # 1 から 10 までの配列 ary を作成 ary = list(range(1, 11)) # 配列 ary の先頭から順に文字列に変換して半角スペースを追加して # 文字列 s に追加する (末尾に半角スペース有) s = "" for num in ary: s += str(num) + " " # 出力 print(s)
2-STEP4: 10 個の数値を出力 (paizaランク D 相当)
1 から 10 までの整数を半角スペース区切りで出力する問題です。
※ 末尾に半角スペースは入りません。
Ruby解答例1
要素が 1 から 10 の配列aryを作成し、joinメソッドで配列aryの各要素を半角スペースで連結して出力しています。
# 解答例1 # 1 から 10 までの 配列ary を生成 # ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ary = (1..10).to_a # 出力 puts(ary.join(" "))
Ruby解答例2
要素が 1 から 10 の配列aryと空の文字列sを作成し、配列aryの先頭から順に参照して文字列に変換します。
文字列sに文字列にした要素を追加し、最後の要素までは半角スペースも追加します。
# 解答例2 n = 10 # 1 から 10 まで 1 ずつ増やしながら繰り返す s = "" 1.upto(n) do |num| s += n.to_s # 最後の数字にはスペースを追加しない break if num == n s += " " end
Python解答例1
要素が 1 から 10 の配列aryを作成し、print(*ary)
でアンパックして出力しています。
アンパックして出力すると、配列の要素を半角スペース区切りで出力してくれます。
# 入出力例1 # 1 から 10 までの 配列ary を生成 # ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ary = list(range(1, 11)) # 出力 print(*ary)
Python解答例2
要素が 1 から 10 の配列aryを作成し、joinメソッドで半角スペース区切りで出力しています。
(joinメソッドを使うには要素を文字列に変換する必要があります。)
# 入出力例2 # 1 から 10 までの 配列ary を生成 # ary = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ary = list(range(1, 11)) # 出力 print(" ".join(map(str, ary)))
Python解答例3
要素が 1 から 10 の配列aryと空の文字列sを作成し、配列aryの先頭から順に参照して文字列に変換します。
文字列sに文字列にした要素を追加し、最後の要素までは半角スペースも追加します。
# 入出力例3 # 1 から 10 まで 1 ずつ増やしながら繰り返す s = "" for num in range(1, 11): s += str(num) # 最後の数字にはスペースを追加しない if num == 10: break s += " " # 出力 print(s)
2-FINAL: 【半角スペース区切りの出力】1,000 個の数値を出力 (paizaランク D 相当)
1 から 1000 までの整数を半角スペース区切りで出力する問題です。
※ 末尾に半角スペースは入りません。
Ruby解答例1
要素が 1 から 1000 の配列aryを作成し、joinメソッドで配列aryの各要素を半角スペースで連結して出力しています。
# 入出力例1 # 1 から 1000 までの配列 ary を生成 # ary = [1, 2, 3, ... 998, 999, 1000] ary = (1..1000).to_a # 出力 puts(ary.join(" "))
Ruby解答例2
要素が 1 から 1000 の配列aryと空の文字列sを作成し、配列aryの先頭から順に参照して文字列に変換します。
文字列sに文字列にした要素を追加し、最後の要素までは半角スペースも追加します。
# 入出力例2 # 1 から 1000 まで 1 ずつ増やしながら繰り返す s = "" 1.upto(1000) do |num| s += num.to_s # 最後の数字にはスペースを追加しない break if n == 1000 s += " " end # 出力 puts(s)
Python解答例1
要素が 1 から 1000 の配列aryを作成し、print(*ary)
でアンパックして出力しています。
# 入出力例1 # 1 から 1000 までの配列 ary を生成 # ary = [1, 2, 3, ... 998, 999, 1000] ary = list(range(1, 1001)) # 出力 print(*ary)
Python解答例2
要素が 1 から 1000 の配列aryを作成し、joinメソッドで半角スペース区切りで出力しています。
# 入出力例2 # 1 から 1000 までの 配列ary を生成 # ary = [1, 2, 3, ... 998, 999, 1000] ary = list(range(1, 1001)) # 出力 print(" ".join(map(str, ary)))
Python解答例3
要素が 1 から 1000 の配列aryと空の文字列sを作成し、配列aryの先頭から順に参照して文字列に変換します。
文字列sに文字列にした要素を追加し、最後の要素までは半角スペースも追加します。
# 入出力例3 # 1 から 1000 まで 1 ずつ増やしながら繰り返す s = "" for num in range(1, 1001): s += str(num) # 最後の数字にはスペースを追加しない if num == 1000: break s += " " # 出力 print(s)
今回のまとめ
Ruby
- 要素数が数個かつ要素数が固定の場合は式展開( #{} )を使う
- 要素数が多い場合や要素数が不定の場合はjoinメソッドを使う
Python
- 要素数が数個かつ要素数が固定の場合はf文字列( f"" )を使う
- 要素数が多い場合や要素数が不定の場合はjoinメソッドを使う
- 配列の要素を半角スペース区切りで出力する場合はアンパック(*配列)を使う
今回は整数値の半角スペース区切り出力を扱いました。
次は文字列の半角スペース区切り・改行区切りの問題です。セクション1,2で必要だった型変換が無い分楽だと思います!