xs = [1000, 2000]
ys = [100, 200]
zs = [10, 20]
ws = [1, 2]
xs_enumerator = Enumerator.new do |yielder|
xs.each do |x|
yielder.yield x
end
end
xys_enumerator = Enumerator.new do |yielder|
xs_enumerator.each do |x|
ys.each do |y|
yielder.yield x, y
end
end
end
xyzs_enumerator = Enumerator.new do |yielder|
xys_enumerator.each do |x, y|
zs.each do |z|
yielder.yield x, y, z
end
end
end
xyzws_enumerator = Enumerator.new do |yielder|
xyzs_enumerator.each do |x, y, z|
ws.each do |w|
yielder.yield x, y, z, w
end
end
end
xyzws_enumerator.each do |x, y, z, w|
p x + y + z + w
end