Skip to content

Instantly share code, notes, and snippets.

@calina-c
Created December 30, 2016 13:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save calina-c/4fe16f0f8fd2fe35b745c01705ca646a to your computer and use it in GitHub Desktop.
Save calina-c/4fe16f0f8fd2fe35b745c01705ca646a to your computer and use it in GitHub Desktop.
class Rule:
def matchesRule(self, number):
pass
def getReplacement(self):
pass
class FizzRule:
def matchesRule(self, number):
return not (number % 3);
def getReplacement(self):
return "Fizz";
class BuzzRule:
def matchesRule(self, number):
return not (number % 5);
def getReplacement(self):
return "Buzz";
class FizzBuzzRule:
def matchesRule(self, number):
return not (number % 15);
def getReplacement(self):
return "FizzBuzz";
class FizzBuzz():
rules = [];
def addRule(self, rule):
self.rules.append(rule)
def generateList(self, n):
list = [];
for number in range(1,n+1):
list.append(self.transform(number));
return list
def transform(self, number):
for rule in self.rules:
if (rule.matchesRule(number)):
return rule.getReplacement();
return str(number);
class Solution(object):
def fizzBuzz(self, n):
"""
:type n: int
:rtype: List[str]
"""
fizzBuzz = FizzBuzz()
fizzBuzzRule = FizzBuzzRule()
fizzRule = FizzRule()
buzzRule = BuzzRule()
fizzBuzz.addRule(fizzBuzzRule)
fizzBuzz.addRule(fizzRule)
fizzBuzz.addRule(buzzRule);
return fizzBuzz.generateList(n)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment