如果您有 befunge 程序321&
,您将如何访问第一项(3)而不丢弃后两项?
该指令\
允许一个人切换前两项,但这并没有让我更接近最后一项......
我正在使用的当前方法是使用p
命令将整个堆栈写入程序存储器,以便到达最后一项。例如,
32110p20p.20g10g@
但是,我觉得这并不像它应该的那样优雅......没有技术将堆栈上的第一项弹出为 N,从堆栈中弹出第 N 个项并将其推到顶部?
(否是一个完全可以接受的答案)
如果您有 befunge 程序321&
,您将如何访问第一项(3)而不丢弃后两项?
该指令\
允许一个人切换前两项,但这并没有让我更接近最后一项......
我正在使用的当前方法是使用p
命令将整个堆栈写入程序存储器,以便到达最后一项。例如,
32110p20p.20g10g@
但是,我觉得这并不像它应该的那样优雅......没有技术将堆栈上的第一项弹出为 N,从堆栈中弹出第 N 个项并将其推到顶部?
(否是一个完全可以接受的答案)
并不真地。您的代码可以缩短为
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 个项目推入堆栈。该函数被该程序的底线调用了两次。
我提出一个更简单的解决方案:
3 :01p 21 01g @
☺
它将 1 “存储”在程序中的位置 ☺ (0, 1) ( :01p
) 而不将其从堆栈中删除,然后将东西放在堆栈上,然后返回 ☺ 在堆栈顶部 ( 01g
)。@
确保程序完成。