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