Ruby で FizzBuzz問題を解く
学習の一環でrubyでFizzBuzz問題を解いたのでまとめます。
FizzBuzz問題って何?
数字を1から順に言い、
3で割り切れる数の時は「Fizz」、
5で割り切れる数も時は「Buzz」、
15で割り切れる数の時は「FizzBuzz」と言うゲーム。
「プログラムを書けるプログラマ」を見分けるためのテストとして良く知られている。
Rubyで書いてみよう
回答は一個ではない。様々な方法でFizzBuzz問題のプログラムを書くことが出来る。
条件分岐は15で割り切れる場合から、書くのが重要!
①each文で書く。
繰り返しのeach文で書くとこうなる。
(1..100).each do |a|
if a%15 == 0
elsif a%5 == 0
puts "Buzz"
elsif a%3 == 0
else
puts a
end
end
②while文で書く
条件を満たすかぎり繰り返されるWhile文だとこうなる。
a = 1
while a <= 100
if a%15 == 0
elsif a%5 == 0
puts "Buzz"
elsif a%3 == 0
else
puts a
end
a += 1
end
③timesを使って書く
繰り返しの回数を決めるtimesを使うとこう
a = 1
100.times do
if a%15 == 0
elsif a%5 == 0
puts "Buzz"
elsif a%3 == 0
else
puts a
end
a += 1
end
④upto を使って書く
上限を決められるuptoで書くとこうなる。
a = 1
1.upto(100) do
if a%15 == 0
elsif a%5 == 0
puts "Buzz"
elsif a%3 == 0
else
puts a
end
a += 1
end
実行結果
正しく表示されていればOK!
1
2
4
Buzz
7
8
Buzz
11
13
14
16
17
19
Buzz
22
23
Buzz
26
28
29
31
32
34
Buzz
37
38
Buzz
41
43
44
46
47
49
Buzz
52
53
Buzz
56
58
59
61
62
64
Buzz
67
68
Buzz
71
73
74
76
77
79
Buzz
82
83
Buzz
86
88
89
91
92
94
Buzz
97
98
Buzz
間違いやもっといいコードがあれば、教えていただければ幸いです。
よろしくお願いします。