我刚刚发现了一种编程语言,称为Brainfuck。
我的问题是如何在Brainfuck中编写if-else语句?
通过比较两个单元格完成吗?如果是,那么我该如何比较该程序中的两个单元格?
谢谢
最佳答案
您需要一个[x,1]结构,其中x可以为0或其他值。解释它的最短方法是在您知道指针没有在其开始的地方结束循环的情况下进行循环。
假设这些单元格分别命名为cell1和cell2
您执行的操作会更改cell1的值,而cell2的值不会更改。
操纵值后,将指针指向cell1,然后进行选择。
[-]> cell1 = 0
[-]+ cell2 = 1
|manipulations that change cell1 value
|goto to cell1
[ // if cell1 != 0
[-]>[-] // both cell1 and cell2 now equal 0
if you want the loop to end and want to prevent the
next loop from starting
|do something
|goto cell1 // Make sure you point again to cell1 to exit the loop
]>[ // else
|do something else
|goto cell1 // Make sure you point again to cell1 to exit the loop
]
在此示例中,我使用//
标记注释,并使用|
标记操作。失去对指针的跟踪是您最大的敌人,因此它可能有助于分离代码并添加一些注释。
现在!最后回答您的问题:不,您不比较两个单元格,您执行的结果要么为0,要么为其他值,然后检查该单元格== 0。
您所做的操作可以比较两个单元格,但是您必须按自己的顺序进行操作
这是Brainfuck的Wikipedia页面,在这里您可以看到Brainfuck的许多简单和复杂的算法,欢迎来到社区:)
https://esolangs.org/wiki/Brainfuck_algorithms#if_.28x.29_.7B_code1_.7D_else_.7B_code2_.7D