如何在Brainfuck中使用模数等数学运算符?

时间:2015-04-24 14:08:37

标签: math brainfuck

在BF中,我知道您可以使用+-运算符进行加法和减法,并且可以将两个预定义数字相乘:

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

但是如何将两个变量相乘,或者使用其他数学运算符,例如模数或除法?

2 个答案:

答案 0 :(得分:5)

这是一个将bf中的两个数相乘的通用查找程序。取自here

将值乘以另一个值 这需要多个副本和嵌套循环。

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])并将结果放在[p + 2]中。

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

进一步阅读here

答案 1 :(得分:1)

请参阅此链接:

https://esolangs.org/wiki/Brainfuck_algorithms

它使用诸如temp0,x,y等值。您应该选择单元格来保存这些值,并将变量名称替换为><以转到包含它的单元格< / p>