15 lines
332 B
Ruby
15 lines
332 B
Ruby
def filtered(s1, s2)
|
|
return enum_for(__method__, s1, s2) unless block_given?
|
|
v, f = s1.next, s2.next
|
|
loop do
|
|
v > f and f = s2.next and next
|
|
v < f and yield v
|
|
v = s1.next
|
|
end
|
|
end
|
|
|
|
squares, cubes = powers(2), powers(3)
|
|
f = filtered(squares, cubes)
|
|
p f.take(30).last(10)
|
|
# p f.lazy.drop(20).first(10) # Ruby 2.0+
|