はじめに
プログラミング初学者の者です。オンラインでプログラミングを学習させて頂いてるのですが、さらに理解を深めていきたいと思い、学習したことを備忘録として、残して理解を深めていきたいと思います。
また、間違った点など、ありましたら、ご指摘いただけると幸いです。よろしくお願いします。
概要
スクールの問題でFizzBuzz問題というものが出てきて、かなり有名なプログラミングの問題ということでした。
まず、1〜100までの数字をターミナルに出力して、「3の倍数」のときは数字の代わりに文字列でFizzと、「5の倍数」のときはBuzz、3と5の倍数である「15の倍数」のときはFizzBuzzと出力するというプログラムを作っていきます。
作るプログラムの雛形は下記↓
def fizz_buzz
# ここに処理を書き加えてください
end
fizz_buzz
条件の概要を整理すると、以下の4点でした。
・数字の1~100を出力する
・値が3の倍数のときだけ、"Fizz"という出力に置き換える
・値が5の倍数のときだけ、"Buzz"という出力に置き換える
・値が3と5の倍数のときだけ、"FizzBuzz"という出力に置き換える
ヒントとして、
・「〇〇の倍数」を導き出す時は剰余演算子を使う。
・条件を指定して繰り返し処理をする場合は、whileメソッドを使う。
プログラムの実装
①まずは、1〜100までの数字をターミナルに出力するためのプログラムです
def fizz_buzz
num = 1
while num <= 100 do
puts num
num = num + 1
end
end
fizz_buzz
whileメソッドは、指定した条件がtrueである間ループします。
また、条件式がfalseになるまで処理を繰り返し行います。
②次に「3の倍数」のときは数字の代わりに文字列でFizzと、「5の倍数」のときはBuzzと出力します
def fizz_buzz
num = 1
while num <= 100 do
if num % 3 == 0 # 3の倍数のとき
puts "Fizz"
elsif num % 5 == 0 # 5の倍数のとき
puts "Buzz"
else # それ以外のとき
puts num
end
num = num + 1
end
end
fizz_buzz
③そしてここに「15の倍数(3と5の倍数)」の時についての条件式を追加します。しかし、このまま下に追加してしまうと上記4行目の「3の倍数であるか」または6行目の「5の倍数であるか」という条件式が真になり、FizzまたはBuzzと表示されてしまいます。
したがって、if文の最初に「15の倍数」のときはFizzBuzzと出力する条件を追加します。
def fizz_buzz
num = 1
while (num <= 100) do
if num % 15 == 0 # 15の倍数のとき
puts "FizzBuzz"
elsif (num % 3) == 0 # 3の倍数のとき
puts "Fizz"
elsif (num % 5) == 0 # 5の倍数のとき
puts "Buzz"
else # それ以外のとき
puts num
end
num = num + 1
end
end
fizz_buzz
別解としては、「15の倍数であるとき」の条件式をnum % 15 == 0からnum % 3 == 0 && num % 5 == 0のように置き換えることができます。