Skip to content

Instantly share code, notes, and snippets.

@Evantm
Last active June 26, 2019 21:05
Show Gist options
  • Save Evantm/27f5f30e5ea276c3232aa13e3c6a915c to your computer and use it in GitHub Desktop.
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.
#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