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

В БФ я знаю, что вы можете сложить и вычесть с + а также - операторы, и что вы можете умножить два предопределенных числа, например, так:

Multiply 4 and 4
++++[>++++<-]

Но как мне умножить две переменные или использовать другие математические операторы, например, по модулю или делению?

2 ответа

Решение

Вот стандартная процедура для умножения двух чисел на bf. Взято отсюда.

Умножьте значение на другое значение. Это требует нескольких копий и вложенных циклов.

Copy first operand to a work location
Move to work location and enter a loop
Move to second operand and copy to a work location
Move to second work location and enter a loop
Move to result location and increment
Move to second work location and decrement
Loop until second work location equals zero
Move to first work location and decrement
Loop until first work location equals zero 

Пример:

Умножьте три (a[p]) на пять (a[p+1]) и поместите результат в a[p+2].

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

Некоторое дальнейшее чтение здесь

Обратитесь к этой ссылке:

https://esolangs.org/wiki/Brainfuck_algorithms

он использует такие значения, как temp0, x, y и т. д. Вы должны выбрать ячейки для хранения этих значений и заменить имена переменных на > или же < идти к камере, держащей ее

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