在DC中,如何从堆栈顶部弹出并丢弃一个数字?具有三个项目(1 2 3
)的堆栈应该成为具有两个项目(2 3
)的堆栈。目前我正把这个数字推到另一个堆栈(Sz),但这看起来相当蹩脚。
答案 0 :(得分:5)
有很多方法可以删除堆栈顶部,但它们有副作用。删除没有副作用的元素需要避免包含副作用。
要删除堆栈顶部没有副作用,请确保顶部是数字,然后运行d!=z
。如果堆栈有[5],则执行以下操作
Stack: [5]
Stack: [5,5]
5 != 5
Stack: []
z
Stack: []
为了确保堆栈的顶部是一个数字,我使用Z
来计算字符串的长度或数字中的位数并将其推回。还有其他选项,比如X.任何可以使任何东西产生任何数字的东西都可以使它与!=兼容。
因此,在所有情况下复制粘贴的完整答案如下:
Zd!=r
我通常把它放在寄存器D(Drop)中:
[Zd!=r]sD
然后我可以运行
lDx
答案 1 :(得分:4)
[...答案删除,其他答案更好......]