-- The Great Computer Language Shootout | |
-- http://shootout.alioth.debian.org | |
-- contributed by Isaac Gouy (Lua novice) | |
n = tonumber(arg[1]) or 1 | |
produced = 0 | |
consumed = 0 | |
buffer = 0 | |
function producer() | |
return coroutine.create( | |
function() | |
while produced < n do | |
produced = produced + 1 | |
buffer = produced | |
-- io.write(buffer) | |
coroutine.yield() | |
end | |
end | |
) | |
end | |
function consumer(p) | |
return coroutine.create( | |
function() | |
local value = 0 | |
while consumed < n do | |
coroutine.resume(p) | |
value = buffer | |
-- io.write(" -> ", value, "\n") | |
consumed = consumed + 1 | |
end | |
end | |
) | |
end | |
coroutine.resume( consumer( producer() )) | |
io.write(produced, " ", consumed, "\n") |