Pico lacks native stack and queue support. I'm unhappy about it, so i cried a bit and my friend GreyKnight came up with a small implementation of a deque (queue/stack combo). From preliminary tests it works fine.
-- 3 tokens
push=add
-- 19 tokens
function pop(stack)
local v = stack[#stack]
stack[#stack]=nil
return v
end
-- 11 tokens
function pop_discard(stack)
stack[#stack]=nil
end
-- 3 tokens
enqueue=add
-- 16 tokens
function dequeue(queue)
local v = queue[1]
del(queue, v)
return v
end
----- Usage -----
stack = {}
push(stack, "goat")
push(stack, "billy")
assert("billy" == pop(stack))
assert("goat" == pop(stack))
queue = {}
enqueue(queue, "nanny")
enqueue(queue, "kid")
assert("nanny" == dequeue(queue))
assert("kid" == dequeue(queue))
|
If you want to save tokens you can do away with defining push and enqueue and just use add() instead.
P#20837 2016-05-19 03:40 ( Edited 2016-05-21 10:00)
:: greyknight
Right, I just wrote that function as a potential replacement for pop() in case you were doing something that never cared about the popped value and really desperately needed to save 8 tokens. Hey, I don't judge. :o)
P#20995 2016-05-21 06:00 ( Edited 2016-05-21 10:00)
[Please log in to post a comment]



