RosettaCodeData/Task/Generator-Exponential/Wren/generator-exponential.wren

35 lines
716 B
Plaintext

var powers = Fn.new { |m|
var i = 0
return Fn.new {
var p = i.pow(m)
i = i + 1
return p
}
}
var squaresNotCubes = Fn.new { |squares, cubes|
var sq = squares.call()
var cu = cubes.call()
return Fn.new {
var p
while (true) {
if (sq < cu) {
p = sq
sq = squares.call()
return p
}
if (sq == cu) sq = squares.call()
cu = cubes.call()
}
}
}
var squares = powers.call(2)
var cubes = powers.call(3)
var sqNotCu = squaresNotCubes.call(squares, cubes)
for (i in 0..29) {
var p = sqNotCu.call()
if (i > 19) System.write("%(p) ")
}
System.print()