Как я могу проверить, равны ли две клетки в brainf*ck?

Как я могу проверить, равно ли значение в ячейке #0 значению в ячейке #1? Я пытаюсь написать код, эквивалентный:

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

Я прочитал, что Брейнфак сравнивает 2 числа как больше или меньше, и второй ответ дал мне общее представление о том, что мне нужно сделать, но я не могу понять это. (Это решение дает if a < b, else.)

Я думаю, что мне нужно сделать что-то в порядке уменьшения обоих значений, и если они достигают 0 одновременно, то это правда. Но я все время застреваю в одной и той же точке выхода каждый раз, когда думаю об этом.

Как я могу проверить, равны ли две клетки в мозговом члене?

3 ответа

Решение

Я думаю, что у меня есть, я не эксперт по бреду, но этот вопрос выглядел интересным. Там может быть более простой способ сделать это, но я пошел с вашим методом уменьшения значений по одному.

В этом случае, если два значения в ячейках 0 и 1 равны, переходят на тонну вперед, если они не равны, переходят немного вперед (вторые скобки - это неравный случай, третьи скобки - равный случай)

Обратите внимание, что я использую brainfucks while в качестве гетто if (cell!= 0)

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

Попробуйте сделать это онлайн: http://fatiherikli.github.io/brainfuck-visualizer/#KysrKysrKysrKysrKysrKysKPgorKysrKysrKysrKysrKysrKwo+KzwKWyAtIDwgLSA+XSA8Wz4+Pj4+X+jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjk

В качестве примера реализации выведите T (true), если два значения равны, F (false), если они не равны
http://fatiherikli.github.io/brainfuck-visualizer/#KysrCj4KKysrKwo+KzwKWyAtIDwgLSA+XSA8Wz4+PgorKysrKysrKysrKysrKysrKysrKworKysrKysrKysrKysrKysrKysrKworKysrKysrKysrKysrKysrKysrKworKysrKysrKysrCi4KPgoKXSA+PiBbCisrKysrKysrKysrKysrKysrKysrCisrKysrKysrKysrKysrKysrKysrCisrKysrKysrKysrKysrKysrKysrCisrKysrKysrKysrKysrKysrKysrCisrKwouCj4KXQ==

Я придумал это для своего компилятора bf,
в основном он вычитает, а затем проверяет, равен ли результат 0.
Можно легко изменить, чтобы выполнять материал в порядке if/else-ish

Макет: [A] B

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

Выход

      0 [result]

Результат равен 1, если он равен

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

Указатель заканчивается на том же указателе в том же состоянии, но код в соответствующих скобках был выполнен.

Другие вопросы по тегам