|
#!/usr/bin/ruby
#
#
func gen_pow(m) {
var e = 0
func { e++ ** m }
}
func gen_filter(g1, g2) {
var v2 = g2.run
func {
loop {
var v1 = g1.run
while (v1 > v2) { v2 = g2.run }
v1 == v2 || return v1
}
}
}
# Create generators.
var squares = gen_pow(2)
var cubes = gen_pow(3)
var squares_without_cubes = gen_filter(squares, cubes)
# Drop 20 values.
{ squares_without_cubes() } * 20
# Print 10 values.
var answer = []
{ answer.append(squares_without_cubes()) } * 10
say answer
assert_eq(answer, [529, 576, 625, 676, 784, 841, 900, 961, 1024, 1089]);
|