ループメニュー1
ループ処理は他の問題集を解くために必須となります。
問題も易しいので標準入出力ができるようになったらすぐ取り組んだ方がいいですね。
STEP: 1 ある数字までの出力 1
(1..10).each do |i|
puts i
end
eachループ
STEP: 2 ある数字までの出力 2
n = gets.to_i
for i in 1..n
puts i
end
for inループ
STEP: 3 数字の受け取り 1
a = gets.split.map(&:to_i)
puts a
putsは配列の要素を改行して出力するのでループ処理のように使うことができます。
STEP: 4 数字の受け取り 2
n = gets.to_i
a = gets.split.map(&:to_i)
a.each do |i|
puts i
end
配列から要素を取り出す繰り返し処理はeachだと簡単に記述できます。
STEP: 5 ある数をある回数表示 1
8.times do
puts 3
end
timesループ
STEP: 6 ある数をある回数表示 2
n, k = gets.split.map(&:to_i)
k.times { puts n }
do endと{}はほぼ同じように使えます。
FINAL問題 a ~ z までを表示
("a".."z").each { |i| puts i }
STEP: 1 数列の和
n = gets.to_i
a = gets.split.map(&:to_i)
puts a.sum
STEP: 2 数列の A 番目から B 番目までの和
n, a, b = gets.split.map(&:to_i)
array = gets.split.map(&:to_i)
puts array[a - 1..b - 1].sum
STEP: 3 数列の値を全部 * 2 して出力
n = gets.to_i
a = gets.split.map(&:to_i)
a.each { |i| puts i * 2 }
FINAL問題 数列同士の引き算
n = gets.to_i
a = gets.split.map(&:to_i)
b = gets.split.map(&:to_i)
n.times { |i| puts a[i] - b[i] }
STEP: 1 数列の反転
n = gets.to_i
a = gets.split.map(&:to_i)
puts a.reverse
STEP: 2 九九の表示 1
steps = []
(1..9).each { |i| steps << 8 * i }
puts steps.join(' ')
STEP: 3 九九の表示 2
n = gets.to_i
steps = []
(1..9).each { |i| steps << n * i }
puts steps.join(' ')
STEP: 4 2 の累乗を表示
n = gets.to_i
(1..n).each { |i| puts 2 ** i }
FINAL問題 FizzBuzz
for i in 1..100
if i % 15 == 0
puts "FizzBuzz"
elsif i % 3 == 0
puts "Fizz"
elsif i % 5 == 0
puts "Buzz"
else
puts i
end
end
FizzBuzz問題はpaizaラーニングの講座で詳しく取り上げられています。講座内で使用するプログラミング言語は違いますが、説明に沿って取り組めば問題ありません。
STEP: 1 数列の最大値
n = gets.to_i
a = gets.split.map(&:to_i)
puts a.max
STEP: 2 数列の最小値
n = gets.to_i
a = gets.split.map(&:to_i)
puts a.min
STEP: 3 数列の何番目にある?
n = gets.to_i
a = gets.split.map(&:to_i)
puts a.index(1) + 1
FINAL問題 数列の中に何個ある?
n = gets.to_i
a = gets.split.map(&:to_i)
puts a.count(1)