2017-09-05 42 views
1

我刚刚发现了一种名为Brainfuck的编程语言。如何在Brainfuck中编写if else语句

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

它是通过比较两个单元完成的吗?如果是的话,那我该如何比较这个程序中的两个单元呢?

谢谢

+0

这似乎是一个令人难以置信的基本问题;那么,你认为这是一种非常棒的语言吗? –

+0

https://stackoverflow.com/questions/6168584/brainfuck-compare-2-numbers-as-greater-than-or-less-than/13327857#13327857 –

回答

0

你需要一个[x,1]的结构,其中x可以是0或别的东西。解释它的最简单的方法是创建一个循环,你知道指针不会结束它开始的循环。

让我们说这些细胞被命名为小区1和小区2

你做改变小区1和小区2的值不会改变的值的操作。

处理完值后,让指针指向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 
] 

在这个例子中,我使用//标记cooments并使用|以标记操作 丢失指针是最大的敌人,所以它可能有助于分离您的代码并发表一些评论。


所以落得回答你的问题:不,你不比较两个单元格,你做的操作,要么结果0或别的东西,然后你检查,如果该单元格== 0

的操作你可以比较两个单元格,但你必须使自己的序列这么做


下面是brainfuck在这里你可以看到很多简单和复杂的算法Brainfuck的维基百科页面,并欢迎社区:)

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