2021-09-03 22:28:06 +02:00
|
|
|
# Write a program that outputs the string representation of numbers
|
|
|
|
# from 1 to n. But for multiples of three it should output “Fizz”
|
|
|
|
# instead of the number and for the multiples of five output “Buzz”.
|
|
|
|
# For numbers which are multiples of both three and five output
|
|
|
|
# “FizzBuzz”.
|
|
|
|
|
|
|
|
#
|
|
|
|
# Approach 1: Hash it!
|
|
|
|
#
|
|
|
|
|
|
|
|
# Complexity Analysis
|
|
|
|
|
|
|
|
# Time Complexity: O(N)
|
|
|
|
# Space Complexity: O(1)
|
|
|
|
|
|
|
|
# @param {Integer} n
|
|
|
|
# @return {String[]}
|
2021-09-09 03:24:37 +02:00
|
|
|
def fizz_buzz(n, fizz_buzz = { 3 => 'Fizz', 5 => 'Buzz' })
|
|
|
|
n.times.map do |i|
|
2021-09-03 22:28:06 +02:00
|
|
|
i += 1
|
2021-09-03 22:30:10 +02:00
|
|
|
num_str = ''
|
2021-09-03 22:28:06 +02:00
|
|
|
|
|
|
|
fizz_buzz.each do |key, value|
|
|
|
|
num_str += value if i % key == 0
|
|
|
|
end
|
|
|
|
|
2021-09-09 03:24:37 +02:00
|
|
|
num_str.empty? ? i.to_s : num_str
|
2021-09-03 22:28:06 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
n = 15
|
|
|
|
puts(fizz_buzz(n))
|