如何检查brainf * ck中两个单元格是否相等?

时间:2016-05-20 19:58:17

标签: if-statement conditional equality brainfuck

如何检查单元格#0中的值是否等于单元格#1中的值?我正在尝试编写相当于的代码:

if(a == b)
{
    //do stuff
}
else
{
    //do something else
}

我已阅读Brainfuck compare 2 numbers as greater than or less than,第二个回答让我对我需要做的事情有了一个大概的了解,但我无法弄明白。 (该解决方案提供if a < b, else。)

我在想我需要按照递减两个值的方式做一些事情,如果它们同时达到0,那么它们就是真的。但每当我想到它时,我就会一直卡在同一个出口处。

如何检查脑卒中两个细胞是否相等?

2 个答案:

答案 0 :(得分:3)

我想我拥有它,我不是脑筋急转弯专家,但这个问题看起来很有趣。可能有一种更简单的方法可以做到这一点,但我采用了逐个递减值的方法。

在这种情况下,如果单元格0和1中的两个值相等,则向前跳跃一吨,如果它们不相等则向前跳跃一点(第二个括号是不相等的情况,第三个括号是相同的情况)

请注意,我使用brainfucks而语句为ghetto if(cell!= 0)

+++++++++++++++++
>
+++++++++++++++++
>+<
[ - < - >] <[>>>>>] >> [>>>>>>>>>>>>>>>>>>>>>]

在线试用:http://fatiherikli.github.io/brainfuck-visualizer/#KysrKysrKysrKysrKysrKysKPgorKysrKysrKysrKysrKysrKwo+KzwKWyAtIDwgLSA+XSA8Wz4+Pj4+XSA+PiBbPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+XQoKCg==

示例实现,如果两个值相等则打印T(true),如果不相等则打印F(假)
http://fatiherikli.github.io/brainfuck-visualizer/#KysrCj4KKysrKwo+KzwKWyAtIDwgLSA+XSA8Wz4+PgorKysrKysrKysrKysrKysrKysrKworKysrKysrKysrKysrKysrKysrKworKysrKysrKysrKysrKysrKysrKworKysrKysrKysrCi4KPgoKXSA+PiBbCisrKysrKysrKysrKysrKysrKysrCisrKysrKysrKysrKysrKysrKysrCisrKysrKysrKysrKysrKysrKysrCisrKysrKysrKysrKysrKysrKysrCisrKwouCj4KXQ==

答案 1 :(得分:0)

+>>(a+++++)>(b+++++)>>+<<<
[[->]<<]
<
[>>>>>-<<<<<
    a>b
]
>>
[->>-<
    a<b
]
>>
[-
    a=b
]

指针以相同的状态结束于同一指针,但相应括号内的代码已被执行。