FizzBuzz
Problem
Solution
https://www.youtube.com/watch?v=QPZ0pIK_wsc
There are 4 cases to consider: divisible by 3, divisible by 5, divisible by 3 and 5, and not divisible by 3 or 5. However, observe that the third case is a combination of the first two cases. We can use a string to build up the output for each index 1 to \(n\), appending ‘Fizz’, then appending ‘Buzz’. This saves us on an if statement. Finally we can check if the output string is empty to determine whether we need to print the index.
Code
https://github.com/GeorgeRPu/tech-interview-prep/blob/main/solutions/FizzBuzz.py
from typing import List
def fizzBuzz(n: int) -> List[str]:
"""Returns a list of numbers 1 to ``n``, with some numbers replaced by
'Fizz', 'Buzz', or 'FizzBuzz' depending on their divisibility.
"""
strings = []
for i in range(1, n + 1):
string = ''
if i % 3 == 0:
string += 'Fizz'
if i % 5 == 0:
string += 'Buzz'
if len(string) == 0:
string += str(i)
strings.append(string)
return strings
Test
>>> from FizzBuzz import fizzBuzz
>>> fizzBuzz(15)
['1', '2', 'Fizz', '4', 'Buzz', 'Fizz', '7', '8', 'Fizz', 'Buzz', '11', 'Fizz', '13', '14', 'FizzBuzz']
Functions
|
Returns a list of numbers 1 to |