如何在 Brainfuck 中编写 if else 语句

The*_*mer 5 if-statement brainfuck

我刚刚发现了一种编程语言,叫做 Brainfuck。

我的问题是如何在 Brainfuck 中编写 if-else 语句?

是通过比较两个单元格来完成的吗?如果是,那么我如何比较这个程序中的两个单元格?

谢谢

Sir*_*elf 6

您需要一个 [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
]
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我//用来标记评论,我|用来标记操作。失去对指针的跟踪是您最大的敌人,因此分离您的代码并添加一些注释可能会有所帮助。


现在!最终回答你的问题:不,你不比较两个单元格,你执行结果为 0 或其他结果的操作,然后检查该单元格是否 == 0。

您所做的操作可以比较两个单元格,但您必须自己制作序列才能这样做


这是 Brainfuck 的维基百科页面,您可以在其中看到许多关于 Brainfuck 的简单和复杂的算法,欢迎来到社区 :)

https://esolangs.org/wiki/Brainfuck_algorithms#if_.28x.29_.7B_code1_.7D_else_.7B_code2_.7D