Skip to content

Instantly share code, notes, and snippets.

@higaki
Created September 4, 2015 08:28
Show Gist options
  • Save higaki/2f2a3202ac5420074a9a to your computer and use it in GitHub Desktop.
Save higaki/2f2a3202ac5420074a9a to your computer and use it in GitHub Desktop.
def fizzbuzz
Enumerator.new do |y|
i = 1
loop do
y << case
when i % 15 == 0 then "FizzBuzz"
when i % 5 == 0 then "Buzz"
when i % 3 == 0 then "Fizz"
else i
end
i += 1
end
end
end
f = fizzbuzz
f.next # => 1
f.next # => 2
f.next # => "Fizz"
f.next # => 4
f.next # => "Buzz"
f.next # => "Fizz"
f.next # => 7
f.next # => 8
f.next # => "Fizz"
f.next # => "Buzz"
f.next # => 11
f.next # => "Fizz"
f.next # => 13
f.next # => 14
f.next # => "FizzBuzz"
f.next # => 16
f.next # => 17
f.next # => "Fizz"
f.next # => 19
f.next # => "Buzz"
f.next # => "Fizz"
f.next # => 22
fizzbuzz.lazy.first(30) # => [1, 2, "Fizz", 4, "Buzz", "Fizz", 7, 8, "Fizz", "Buzz", 11, "Fizz", 13, 14, "FizzBuzz", 16, 17, "Fizz", 19, "Buzz", "Fizz", 22, 23, "Fizz", "Buzz", 26, "Fizz", 28, 29, "FizzBuzz"]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment