Last active
June 26, 2019 21:05
-
-
Save Evantm/27f5f30e5ea276c3232aa13e3c6a915c to your computer and use it in GitHub Desktop.
Classic Fizzbuzz done 5 ways: Classic, dictionary, recursion, generators, closures Could be done more ways.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#fizz buzz 5 ways | |
def fizzbuzz_1(): #classic | |
for i in range(1,101): | |
if i % 15 == 0: | |
print('fizzbuzz') | |
elif i % 3 == 0: | |
print('fizz') | |
elif i % 5 == 0: | |
print('buzz') | |
else: | |
print(i) | |
def fizzbuzz_2(): #dict | |
lookup = { | |
'3': 'fizz', | |
'5': 'buzz', | |
'15': 'fizzbuzz' | |
} | |
for i in range(1,101): | |
for lookup_val in sorted(lookup.keys(),key=lambda a:int(a),reverse=True): | |
if i % int(lookup_val) == 0: | |
print(lookup[lookup_val]) | |
break | |
else: | |
print(i) | |
def fizzbuzz_3(): #recursion | |
def fizzbuzz_helper(n): | |
if n == 101: return | |
if n % 15 == 0: | |
print('fizzbuzz') | |
elif n % 3== 0: | |
print('buzz') | |
elif n % 5 == 0: | |
print('fizz') | |
else: | |
print(n) | |
fizzbuzz_helper(n+1) | |
fizzbuzz_helper(1) | |
def fizzbuzz_4(): #generators | |
def fizzbuzz_gen(): | |
for i in range(1,101): | |
if i % 15 == 0: | |
yield 'fizzbuzz' | |
elif i % 3== 0: | |
yield 'buzz' | |
elif i % 5 == 0: | |
yield 'fizz' | |
else: | |
yield i | |
for i in fizzbuzz_gen(): | |
print(i) | |
def fizzbuzz_5(): #closures | |
def fizzbuzz_maker(n,word): | |
def fizzbuzz_closure(i): | |
if i % n == 0: | |
return word | |
return fizzbuzz_closure | |
fizz = fizzbuzz_maker(3,'fizz') | |
buzz = fizzbuzz_maker(5,'buzz') | |
fizzbuzz = fizzbuzz_maker(15,'fizzbuzz') | |
for i in range(1,101): | |
print(fizzbuzz(i) or fizz(i) or buzz(i) or i) | |
if __name__ == '__main__': | |
fizzbuzz_1() | |
fizzbuzz_2() | |
fizzbuzz_3() | |
fizzbuzz_4() | |
fizzbuzz_5() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment