Ruby (Fizz Buzz問題)
2019-04-21
Rubyについて復習がてら有名なFizzBuzz問題の処理を整理し処理の実行内容を書いてみます。
1から100までの数字を出力し、3の倍数の時はFizzと、5の倍数の時はBuzzと、15の倍数の時はFizzBzzと出力させます。
①def fizz_buzz
② num = 1
③ while (num <= 100) do
④ if (num % 3 == 0) && (num % 5 == 0)
puts "FizzBuzz"
⑤ elsif (num % 3 == 0)
puts "Fizz"
⑥ elsif (num % 5 ) == 0
puts "Buzz"
⑦ else
puts num
end
⑧ num = num + 1
end
end
fizz_buzz
①まず今回実行する処理である"Fizz_Buzz”を定義します。「下記は"Fizz_Buzz”を実行するために記載するコードですよ」ということですね。
②1~100まで出力するので、まずは数字を用意します。まずは起点の1を用意してこれからこの数字を用いて処理の流れを指示しますねということ。num = 1はnumに1を代入するという意味。
③用意した数字(ここではnumと名前をつけています)が100行くまでの間に今から書く指示に従って処理を実行してねということを書いています。
まずは最初の「1」について
④もし数字÷3が0(つまり3の倍数)かつ、数字÷5も0(つまり5の倍数)の場合、両方当てはまる15の倍数であるので"FizzBuzz"と出力しなさい。
⑤ ④には当てはまらず、もし数字÷3が0(つまり3の倍数)であるならば、Fizzと出力しなさい。④に当てはまらないが③には当てはまる、つまり5の倍数ではないが3の倍数ではある場合。
⑥ ④、⑤には当てはらず、もし数字÷5が0(つまり5の倍数)であるならばBuzzと出力しなさい。
⑦「その他」の処理。上記に当てはまらない数字(3でも5でも割り切れない数字)はnumを表示しなさい。つまりそのまま数字を表示しなさいということですね。
まず最初の1は④〜⑥には当てはらなかったので「1」とそのまま出力します。
⑧「1」の処理は終わりましたので、数字を一つあげて次は2についてどこに当てはまるか見ていきたいですね。なのでnum(今は1)に+1をして③に戻りまた処理をします。その次の数字は2+1の3、その次は3+1の4と順番に処理を実行していきます。そして③の指示では100までとされていましたので、100になったら処理は終わりになります。