40 lines
792 B
Text
40 lines
792 B
Text
-- demo\rosetta\Generator_Exponential.exw
|
|
without js -- tasks
|
|
|
|
atom res
|
|
bool terminate = false
|
|
|
|
procedure powers(integer p)
|
|
integer i = 0
|
|
while not terminate do
|
|
res = power(i,p)
|
|
task_suspend(task_self())
|
|
task_yield()
|
|
i += 1
|
|
end while
|
|
end procedure
|
|
|
|
constant squares = task_create(powers,{2}),
|
|
cubes = task_create(powers,{3})
|
|
|
|
atom square, cube
|
|
task_schedule(cubes,1)
|
|
task_yield()
|
|
cube = res
|
|
sequence snq = {}
|
|
for i=1 to 30 do
|
|
do
|
|
task_schedule(squares,1)
|
|
task_yield()
|
|
square = res
|
|
while cube<square do
|
|
task_schedule(cubes,1)
|
|
task_yield()
|
|
cube = res
|
|
end while
|
|
until square!=cube
|
|
if i>20 then snq &= square end if
|
|
end for
|
|
?snq
|
|
terminate = 1
|
|
wait_key()
|