Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1. class FizzBuzz(object):
  2.  
  3. def start(self, end_number):
  4. return ",".join(self._parse_numbers(end_number))
  5.  
  6. def _parse_numbers(self, end_number):
  7. number_list = []
  8. for number in range(1, end_number+1):
  9. number_list.append(self.parse_number(number))
  10. return number_list
  11.  
  12. def parse_number(self, number):
  13. if self._is_number_divisible_by_five_and_three(number):
  14. return "FizzBuzz"
  15. elif self._is_number_divisible_by_three(number):
  16. return "Fizz"
  17. elif self._is_number_divisible_by_five(number):
  18. return "Buzz"
  19. else:
  20. return str(number)
  21.  
  22. def _is_number_divisible_by_five_and_three(self, number):
  23. return number % 15 == 0
  24.  
  25. def _is_number_divisible_by_three(self, number):
  26. return number % 3 == 0
  27.  
  28. def _is_number_divisible_by_five(self, number):
  29. return number % 5 == 0
  30.  
  31. def parse_number(number):
  32. if number % 15 == 0:
  33. return "FizzBuzz"
  34. elif number % 3 == 0:
  35. return "Fizz"
  36. elif number % 5 == 0:
  37. return "Buzz"
  38. else:
  39. return str(number)
  40.  
  41. def parse_number(number):
  42. """Returns a string Fizzbuzz representation of a number"""
  43.  
  44. # This is the same as (number % 5 == 0) and (number % 3 == 0)
  45. if number % 15 == 0:
  46.  
  47. def parse_number(number):
  48. """Returns a string Fizzbuzz representation of a number"""
  49.  
  50. # This is the same as (number % 5 == 0) and (number % 3 == 0)
  51. if number % 15 == 0:
  52. return "FizzBuzz"
  53. elif number % 3 == 0:
  54. return "Fizz"
  55. elif number % 5 == 0:
  56. return "Buzz"
  57. else:
  58. return str(number)
  59.  
  60. def fizzbuzz(end_number):
  61. """Return a list of Fizzbuzz parsed numbers up to end_number."""
  62.  
  63. return [parse_number(number) for number in range(1, end_number+1)]
  64.  
  65. def fizzbuzz_string(end_number):
  66. return ",".join(fizzbuzz(end_number))
  67.  
  68. def is_divisible(number, modulo):
  69. """Return if number % modulo is equal to 0."""
  70.  
  71. return number % modulo == 0
  72.  
  73. from collections import namedtuple
  74.  
  75. def is_divisible(number, modulo):
  76. """Return if number % modulo is equal to 0."""
  77.  
  78. return number % modulo == 0
  79.  
  80.  
  81. FizzBuzz = namedtuple('FizzBuzz', 'number, name')
  82.  
  83. fizz_buzz_words = [
  84. FizzBuzz( 3, 'Fizz'),
  85. FizzBuzz( 4, 'Buzz'),
  86. FizzBuzz( 7, 'Bang'),
  87. FizzBuzz(11, 'Boom'),
  88. ]
  89.  
  90. def to_fizz_buzz_string(n):
  91. """Returns an extended FizzBuzz string representation of a number."""
  92. fizz_buzzes = [fb.name for fb in fizz_buzz_words if is_divisible(n, fb.number)]
  93.  
  94. return ''.join(fizz_buzzes) if fizz_buzzes else str(n)
  95.  
  96.  
  97. for a in range(124, 134):
  98. print to_fizz_buzz_string(a)
  99.  
  100. print ', '.join(to_fizz_buzz_string(n) for n in range(923, 935))
  101.  
  102. number_list = []
  103. for number in range(1, end_number+1):
  104. number_list.append(self.parse_number(number))
  105. return number_list
  106.  
  107. # -*- coding: utf-8 -*-
  108. """A generic configurable FizzBuzz."""
  109.  
  110. from functools import partial
  111.  
  112.  
  113. def byn(number, div, out):
  114. assert isinstance(number, int)
  115. assert isinstance(div, int)
  116. if number % div == 0:
  117. return out
  118. return ''
  119.  
  120.  
  121. def to_str(number):
  122. return str(number)
  123.  
  124.  
  125. class FizzBuzz(object):
  126.  
  127. _actions = (
  128. partial(byn, div=3, out='fizz'),
  129. partial(byn, div=5, out='buzz'),
  130. )
  131.  
  132. _default_action = partial(to_str)
  133.  
  134. def __init__(self, actions=None, default_action=None):
  135. if actions:
  136. self._actions = actions
  137. if default_action:
  138. self._default_action = default_action
  139.  
  140. def response(self, number):
  141. rstr = ''
  142. for action in self._actions:
  143. rstr += action(number)
  144. if not rstr:
  145. rstr = self._default_action(number)
  146. return rstr
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement