初めて使うRubyでFizzBuzz問題を書いてみた
FizzBuzz問題。
今更感がありますが。
情報系の学部を出てるのにこれができない人がいるとは信じられませんね(本当?)。
IF文を使って。
[ruby]
for i in 1..100
if i % 5 == 0
if i % 3 == 0
puts “FizzBuzz”
end
puts “Buzz”
elsif i % 3 == 0
puts “Fizz”
else
puts i
end
end
[/ruby]
こちらはcase文を使ってみました。
[ruby]
for i in 1..100
case true
when i % 3 == 0 && i % 5 == 0
puts “FizzBuzz”
when i % 3 == 0
puts “Fizz”
when i % 5 == 0
puts “Buzz”
else
puts i
end
end
[/ruby]
おまけ
3の倍数と3が付く時バカになります。。。(古い)
[ruby]
puts “3の倍数と3が付く時バカになります。”
strings = [“じゅう”,”いち”,”に”,”さん”,”よん”,”ご”,”ろく”,”なな”,”はち”,”きゅう”]
for i in 1..100
case true
when i % 3 == 0
#3で割り切れるとき
if i.to_s.length == 1
#一桁の時
puts strings[i] + “!”
else
#二桁の時
if i.to_s[0,1] == “1”
#一の位が「1」の時
puts strings[0] + strings[i.to_s[1,1].to_i] + “!”
else
#一の位が「1」以外の時
if i % 30 == 0
#30,60,90の時は「じゅう」がダブってしまうので別にする
puts strings[i.to_s[0,1].to_i] + strings[i.to_s[1,1].to_i] + “!”
else
puts strings[i.to_s[0,1].to_i] + “じゅう” + strings[i.to_s[1,1].to_i] + “!”
end
end
end
when i.to_s[0,1] == “3” || i.to_s[1,1] == “3”
#3がつくとき(常に二桁)
if i.to_s[0,1] == “1”
#一の位が「1」の時
puts strings[0] + strings[i.to_s[1,1].to_i] + “!”
else
#一の位が「1」以外の時
puts strings[i.to_s[0,1].to_i] + “じゅう” + strings[i.to_s[1,1].to_i] + “!”
end
else
puts i
end
end
[/ruby]
↓実行結果↓
1
2
さん!
4
5
ろく!
7
8
きゅう!
10
11
じゅうに!
じゅうさん!
14
じゅうご!
16
17
じゅうはち!
19
20
にじゅういち!
22
にじゅうさん!
にじゅうよん!
25
26
にじゅうなな!
28
29
さんじゅう!
さんじゅういち!
さんじゅうに!
さんじゅうさん!
さんじゅうよん!
さんじゅうご!
さんじゅうろく!
さんじゅうなな!
さんじゅうはち!
さんじゅうきゅう!
40
41
よんじゅうに!
よんじゅうさん!
44
よんじゅうご!
46
47
よんじゅうはち!
49
50
ごじゅういち!
52
ごじゅうさん!
ごじゅうよん!
55
56
ごじゅうなな!
58
59
ろくじゅう!
61
62
ろくじゅうさん!
64
65
ろくじゅうろく!
67
68
ろくじゅうきゅう!
70
71
ななじゅうに!
ななじゅうさん!
74
ななじゅうご!
76
77
ななじゅうはち!
79
80
はちじゅういち!
82
はちじゅうさん!
はちじゅうよん!
85
86
はちじゅうなな!
88
89
きゅうじゅう!
91
92
きゅうじゅうさん!
94
95
きゅうじゅうろく!
97
98
きゅうじゅうきゅう!
100