18 lines
409 B
Ruby
18 lines
409 B
Ruby
squares = Enumerator.new{|y| (0..).each{|n| y << 2**n} }
|
|
squares5 = Enumerator.new{|y| (0..).each{|n| y << 2**n*5} }
|
|
|
|
pyth_quad = Enumerator.new do |y|
|
|
n = squares.next
|
|
m = squares5.next
|
|
loop do
|
|
if n < m
|
|
y << n
|
|
n = squares.next
|
|
else
|
|
y << m
|
|
m = squares5.next
|
|
end
|
|
end
|
|
end
|
|
# this takes less than a millisecond
|
|
puts pyth_quad.take_while{|n| n <= 1000000000}.join(" ")
|