if-statementconditional-statementsequalitybrainfuck

How can I check if two cells are equal in brainf*ck?


How can I check if the value in cell #0 is equal to the value in cell #1? I am trying to write code equivalent to:

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

I have read Brainfuck compare 2 numbers as greater than or less than, and the second answer gave me a general idea of what I'd need to do, but I cannot figure it out. (That solution gives if a < b, else.)

I am thinking I need to do something along the lines of decrementing both values, and if they reach 0 at the same time, then they are true. But I keep getting stuck at the same exit point every time I think about it.

How can I check if two cells are equal in brainfuck?


Solution

  • I think I have it, I'm not a brainfuck expert but this question looked interesting. There might be a simpler way to do it, but I went with your method of decrementing values one by one.

    In this case, if the two values in cell 0 and 1 are equal jump a ton forward, if they are not equal jump a little forward (second brackets is the not equal case, third brackets is the equal case)

    Note that I'm using brainfucks while statements as a ghetto if (cell != 0)

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

    Try it online: http://fatiherikli.github.io/brainfuck-visualizer/#KysrKysrKysrKysrKysrKysKPgorKysrKysrKysrKysrKysrKwo+KzwKWyAtIDwgLSA+XSA8Wz4+Pj4+XSA+PiBbPj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+XQoKCg==

    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==