#RubyのFizzBuzz練習問題を解く(今回はeach doを使用)
・1から30まで数える
・3の時はFizzと表示する
・5の時はBuzzと表示する
・15の時はFizzBuzzと表示する
まず、擬似コードを考える前に、情報を整理
どのようなコードが必要そうかを並べてみる。
①1から30まで数える
②もし3だったらFizzと表示する
③もし5だったらBuzzと表示する
④もし15だったらFizzBuzzと表示する
以上。
では、擬似コードっぽいやつ書いていく。
1から30まで数える(今回は、each do を使って)
if ○○なら
puts ○○と表示する
elsif
○○なら
puts ○○と表示する
elsif
○○なら
puts ○○と表示する
else
それ以外なら
puts ○○と表示する
ここにコードをあてていくと、考えがまとまりやすくなり、コードがすっきりしそう。
もし、仮説と違ったら擬似コードの考え方を実際の答えと比べてみる。
(1..30).each do|i|
if i%15==0
puts "FizzBuzz"
elsif
i%3==0
puts "Fizz"
elsif
i%5==0
puts "Buzz"
else
puts i
end
end
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
Buzz
Fizz
22
23
Fizz
Buzz
26
Fizz
28
29
FizzBuzz
このように表示されていればOKです。
#応用編:数字の横にFizzとBuzzをそれぞれつけてみる。
考え方はほとんど一緒
表示の仕方だけ変えればいいかな?っと仮説を立ててみる。
合ってたら自分を褒める。
(1..30).each do|i|
if i%15==0
puts "#{i} FizzBuzz"
elsif
i%3==0
puts "#{i} Fizz"
elsif
i%5==0
puts "#{i} Buzz"
else
puts i
end
end
見やすくするため、一応数字と文字の間にスペースいれてます。
うまくいくと、以下のようになります。
1
2
3 Fizz
4
5 Buzz
6 Fizz
7
8
9 Fizz
10 Buzz
11
12 Fizz
13
14
15 FizzBuzz
16
17
18 Fizz
19
20 Buzz
21 Fizz
22
23
24 Fizz
25 Buzz
26
27 Fizz
28
29
30 FizzBuzz
以上となります。
ご参考いただけますと幸いです。