#!/usr/bin/env python # coding: utf-8 # This notebook was prepared by [Donne Martin](https://github.com/donnemartin). Source and license info is on [GitHub](https://github.com/donnemartin/interactive-coding-challenges). # # Challenge Notebook # ## Problem: Implement Fizz Buzz. # # * [Constraints](#Constraints) # * [Test Cases](#Test-Cases) # * [Algorithm](#Algorithm) # * [Code](#Code) # * [Unit Test](#Unit-Test) # * [Solution Notebook](#Solution-Notebook) # ## Constraints # # * What is fizz buzz? # * Return the string representation of numbers from 1 to n # * Multiples of 3 -> 'Fizz' # * Multiples of 5 -> 'Buzz' # * Multiples of 3 and 5 -> 'FizzBuzz' # * Can we assume the inputs are valid? # * No # * Can we assume this fits memory? # * Yes # ## Test Cases # #
# * None -> Exception
# * < 1 -> Exception
# * 15 ->
# [
#     '1',
#     '2',
#     'Fizz',
#     '4',
#     'Buzz',
#     'Fizz',
#     '7',
#     '8',
#     'Fizz',
#     'Buzz',
#     '11',
#     'Fizz',
#     '13',
#     '14',
#     'FizzBuzz'
# ]
# 
# ## Algorithm # # Refer to the [Solution Notebook](http://nbviewer.ipython.org/github/donnemartin/interactive-coding-challenges/blob/master/arrays_strings/fizz_buzz/fizz_buzz_solution.ipynb). If you are stuck and need a hint, the solution notebook's algorithm discussion might be a good place to start. # ## Code # In[ ]: class Solution(object): def fizz_buzz(self, num): # TODO: Implement me pass # ## Unit Test # **The following unit test is expected to fail until you solve the challenge.** # In[ ]: # %load test_fizz_buzz.py import unittest class TestFizzBuzz(unittest.TestCase): def test_fizz_buzz(self): solution = Solution() self.assertRaises(TypeError, solution.fizz_buzz, None) self.assertRaises(ValueError, solution.fizz_buzz, 0) expected = [ '1', '2', 'Fizz', '4', 'Buzz', 'Fizz', '7', '8', 'Fizz', 'Buzz', '11', 'Fizz', '13', '14', 'FizzBuzz' ] self.assertEqual(solution.fizz_buzz(15), expected) print('Success: test_fizz_buzz') def main(): test = TestFizzBuzz() test.test_fizz_buzz() if __name__ == '__main__': main() # ## Solution Notebook # # Review the [Solution Notebook](http://nbviewer.ipython.org/github/donnemartin/interactive-coding-challenges/blob/master/arrays_strings/fizz_buzz/fizz_buzz_solution.ipynb) for a discussion on algorithms and code solutions.