Skip to content

Instantly share code, notes, and snippets.

@xentatt
Created May 21, 2013 10:44
Show Gist options
  • Save xentatt/5618922 to your computer and use it in GitHub Desktop.
Save xentatt/5618922 to your computer and use it in GitHub Desktop.
Infinite generator
#!/usr/bin/env ruby
# Return given number of even Integers
# that have number '4' within them
even_numbers = Enumerator.new do |yielder|
number = 0
count = 1
loop do
number += count
count += 1
yielder.yield number
end
end
class Enumerator
def infinite_selector(&block)
Enumerator.new do |yielder|
self.each do |value|
yielder.yield(value) if block.call(value)
end
end
end
end
p even_numbers
.infinite_selector {|val| val % 2 == 0}
.infinite_selector {|val| val.to_s =~ /4/}
.first(10)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment