# my attempt at the fizz buzz kata
class Printer
def self.output
1.upto(15) do |n|
puts SpecialNumber.new(n).factory.print
end
end
end
class SpecialNumber
attr_reader :number
def initialize(number)
@number = number
end
def factory
if is_divisible_by?(15)
FizzBuzzNumber
elsif is_divisible_by?(3)
FizzNumber
elsif is_divisible_by?(5)
BuzzNumber
else
NormalNumber
end.new(@number)
end
def print
end
def is_divisible_by?(factor)
@number % factor == 0
end
end
class FizzNumber < SpecialNumber
def print
"fizz"
end
end
class BuzzNumber < SpecialNumber
def print
"buzz"
end
end
class FizzBuzzNumber < SpecialNumber
def print
"fizzbuzz"
end
end
class NormalNumber < SpecialNumber
def print
@number
end
end
Printer.output
Created
April 19, 2017 08:27
-
-
Save benkoshy/b0c0ba1889c9cc7259a673b4ad36ddad to your computer and use it in GitHub Desktop.
FizzBuzz kata
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment