Skip to content

Commit deda5c5

Browse files
committed
🟢 Solve problem 412
1 parent af67fe2 commit deda5c5

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

‎ruby/412.rb

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
require 'minitest/autorun'
2+
3+
def fizz_buzz(n)
4+
pre_condition(n)
5+
result = []
6+
7+
(1..n).each do |i|
8+
if i % 3 == 0 && i % 5 == 0
9+
result << "FizzBuzz"
10+
elsif i % 3 == 0
11+
result << "Fizz"
12+
elsif i % 5 == 0
13+
result << "Buzz"
14+
else
15+
result << i.to_s
16+
end
17+
end
18+
19+
result
20+
end
21+
22+
def pre_condition(value)
23+
raise ArgumentError, "Argument must be an integer" unless value.is_a? Integer
24+
end
25+
26+
class TestFizzBuzz < Minitest::Test
27+
def test_fizz_buzz
28+
assert_equal ["1", "2", "Fizz"], fizz_buzz(3)
29+
assert_equal ["1", "2", "Fizz", "4", "Buzz"], fizz_buzz(5)
30+
assert_equal ["1", "2", "Fizz", "4", "Buzz", "Fizz", "7", "8", "Fizz", "Buzz", "11", "Fizz", "13", "14", "FizzBuzz"], fizz_buzz(15)
31+
end
32+
33+
def test_pre_condition
34+
assert_raises ArgumentError do
35+
fizz_buzz("a")
36+
end
37+
end
38+
end

0 commit comments

Comments
 (0)