Generator/Exponential: Difference between revisions
Content added Content deleted
(Add SenseTalk) |
(Added Wren) |
||
Line 3,612: | Line 3,612: | ||
for I:= 1 to 10 do [IntOut(0, Filter); ChOut(0, ^ )]; \show next 10 values |
for I:= 1 to 10 do [IntOut(0, Filter); ChOut(0, ^ )]; \show next 10 values |
||
]</lang> |
]</lang> |
||
{{out}} |
|||
<pre> |
|||
529 576 625 676 784 841 900 961 1024 1089 |
|||
</pre> |
|||
=={{header|Wren}}== |
|||
Closure based solution. Similar approach to Go (first example). |
|||
<lang ecmascript>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()</lang> |
|||
{{out}} |
{{out}} |