5

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

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

我读过Brainfuck 比较 2 个数字大于或小于,第二个答案让我大致了解了我需要做什么,但我无法弄清楚。(该解决方案给出了if a < b, else。)

我想我需要按照递减这两个值的方式做一些事情,如果它们同时达到 0,那么它们就是真的。但每次我想到它时,我总是被困在同一个出口点。

如何在brainfuck中检查两个细胞是否相等?

4

3 回答 3

4

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

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

请注意,我使用brainfucks while 语句作为贫民区 if (cell != 0)

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

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

An example implementation, print T (true) if the two values are equal, F (false) if they are not equal
http://fatiherikli.github.io/brainfuck-visualizer/#KysrCj4KKysrKwo+KzwKWyAtIDwgLSA+XSA8Wz4+PgorKysrKysrKysrKysrKysrKysrKworKysrKysrKysrKysrKysrKysrKworKysrKysrKysrKysrKysrKysrKworKysrKysrKysrCi4KPgoKXSA+PiBbCisrKysrKysrKysrKysrKysrKysrCisrKysrKysrKysrKysrKysrKysrCisrKysrKysrKysrKysrKysrKysrCisrKysrKysrKysrKysrKysrKysrCisrKwouCj4KXQ= =

于 2016-05-20T20:41:40.860 回答
1

我为我的 bf 编译器想出了这个,
基本上它减去然后检查结果是否为 0。
可以很容易地更改为以 if/else-ish 方式执行东西

布局: [A] B

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

输出

0 [result]

如果相等,结果为 1

于 2021-12-07T01:44:33.320 回答
1
+>>(a+++++)>(b+++++)>>+<<<
[[->]<<]
<
[>>>>>-<<<<<
    a>b
]
>>
[->>-<
    a<b
]
>>
[-
    a=b
]

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

于 2017-05-03T12:24:41.247 回答