Ruby FizzBuzz
IT未経験のスクール生が学んだことをアウトプットします
FizzBuzzは非常に有名なプログラミングの問題です。
私もRubyの勉強やり始めた時にこの問題と遭遇しました。
プログラミング初心者の方は特に覚えておきたい問題です。
FizzBuzz問題
1〜100までの数字をターミナルに出力してください。ただし、「3の倍数」のときは数字の代わりに文字列でFizzと、「5の倍数」のときはBuzz、両方の倍数である「15の倍数」のときはFizzBuzzと出力してください。
1から100までの数字を出力させる
1〜100まで出力させるからといって以下のように順番にputsで出力しようとしては効率が悪すぎます。
良くない例
def fizz_buzz
puts 1
puts 2
puts 3
(中略)
puts 99
puts 100
一定の処理を繰り返す時にはwhile文を使います。
while文
while文は繰り返し処理を行う文法の1つです。
while 条件式 do
# 処理
end
条件式を元に繰り返すかどうかを判定します。条件式がtrueの時は処理を繰り返します。
1~100まで出力、つまり数字が100以上になるまでは処理を繰り返すので、条件式は以下のようになります。
num = 1
while (num <=100) do
end
1から始まるのでnum=1を定義します。while文の中に書いてしまうとnumを判別できなくなりエラーが起こるので注意しましょう。
次にwhile文の中身である処理を記述しましょう。処理は問題文にある通り、「3の倍数」のときはFizzと、「5の倍数」のときはBuzz、両方の倍数である「15の倍数」のときはFizzBuzzと出力、です。
if文
「3の倍数の時は」や「5の倍数の時は」など条件によって処理が別れる時はif文を使います。
条件が複数の時はelsifを使います
書き方
if 条件式1
# 条件式1が真(true)のときに実行する処理
elsif 条件式2
# 条件式1が偽(false)のとき、かつ
# 条件式2が真(true)のときに実行する処理
elsif 条件式3
# 条件式1が偽(false)のとき、更に
# 条件式2が偽(false)のとき、かつ
# 条件式3が真(true)のときに実行する処理
else
# 条件式1と条件式2がどちらとも偽(false)のときに実行する処理
end
今回の問題に当てはめるとこうなります。
def fizz_buzz
num = 1
while (num <= 100) do
#15の倍数の時(もしnumを15で割った時の余りが0なら)
if (num % 15) == 0
puts "FizzBuzz"
#3の倍数の時(numを3で割った時の余りが0なら)
elsif (num % 3) == 0
puts "Fizz"
#5の倍数の時(numを5で割った時の余りが0なら)
elsif (num % 5) == 0
puts "Buzz"
#それ以外の時
else
puts num
end
end
end
最後に処理が終わるごとにnumを1ずつ増やさなければいけません。増やさないとnumが1のままで、
永遠に1だけが出力されます。
完成コード
def fizz_buzz
num = 1
while (num <= 100) do
if (num % 15) == 0
puts "FizzBuzz"
elsif (num % 3) == 0
puts "Fizz"
elsif (num % 5) == 0
puts "Buzz"
else
puts num
end
# numを1ずつ増やす num +=1(自己代入演算子)でもOK
num = num + 1
end
end
#メソッドの実行
fizz_buzz
Author And Source
この問題について(Ruby FizzBuzz), 我々は、より多くの情報をここで見つけました https://qiita.com/katou02/items/a90ba5782f4d6171182b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .