如果您有befunge程序321&
,您如何在不丢弃后两项的情况下访问第一项(3)?
指令\
允许人们切换前两个项目,但这并不能让我更接近最后一个......
我使用的当前方法是使用p
命令将整个堆栈写入程序存储器以便到达最后一项。例如,
32110p20p.20g10g@
然而,我觉得这并不像它那样优雅......没有技巧可以将堆叠中的第一个项目弹出为N,从堆栈中弹出第N个项目并推送它到顶部?
(不是一个完全可以接受的答案)
答案 0 :(得分:3)
不是真的。 您的代码可以缩短为
32110p\.10g@
但如果您想要更一般的结果,可能会有以下内容。下面,我正在使用Befunge,因为它本意使用(至少在我看来):作为一种函数式编程语言,每个函数都有自己的行和列集。指针是使用方向创建的,存储1
和0
确定函数的调用位置。我要指出的一件事是,堆栈几乎不用于任何语言的存储。只需将堆栈写入存储。请注意,987
溢出了长度为10的堆栈。
v >>>>>>>>>>>12p:10p11pv
1 0 v<<<<<<<<<<<<<<<<<<
v >210gp10g1-10p^
>10g|
>14p010pv
v<<<<<<<<<<<<<<<<<<<<<<<<
v >210g1+g10g1+10p^
>10g11g-|
v g21g41<
v _ v
>98765432102^>. 2^>.@
上面的代码将堆栈中的第n-1项写入并包括“内存”,将第n个项写入其他位置,读取“内存”,然后将第n个项目推送到堆栈。 该程序的底线调用该函数两次。