同
本次实现逻辑仍为暴力破解法,简单粗暴(毕竟BF也不支持高端操作)如何使用BrainFuck实现乘法?
、如何使用BrainFuck实现乘法?
的帖子一样,也是我上课闲着无聊写的,不过这次也加了注释,方便理解
倒推减法,得到加法,比如:
10 - 2 = ?
=> ? + 2 = 10
?为每一次循环需要猜测的数字
2020.09.27补充:
在V2EX发了个帖子,突然发现我减法做的复杂了,啊这,只要递减就可以了
https://www.v2ex.com/t/708480
以下是原文章思路:
# 代码(加注释版)
因为上一次的除法忘了写注释,这一次我在草稿纸上手动加了注释,方便直接打到电脑上
,>, #在index0 和 1 记录 被减数 减数 [ #循环 全程序最大的循环,用来控制是否接着循环猜数字 [->+>+<<] #把被减数放到index2和3 < #index0 [->>>>+>+<<<<<] #把减数放到index4 和 5 >>>>>>>> #index8 存储猜测的数字,每次循环不清空 + #每次向上加一个数字 [-<+<+>>]<[->+<] #最终结果:index6 8 为猜测的数字 #index 6为循环内变量,需要被递减来判断是否猜测正确,index 8为全局变量,每次循环加一,不清空 # 中间过程,先把index8的内容加1后移动到index6 和 7再把index 7移动给index 8 < index 6 [-<<<+>>>] #把猜测的数字index6 加到index 3中 <<< #index 3 [->-<]>[>[-<<<<<+>>>>>]#如果index 3和index 4互相递减之后index4不是0,则把index5存储的的被减数放到index0 <<< #index 2 [-<+>] #把index2存储的减数放回index 1 ]>> # index4 [-] #把4中的数字清空 <<< #index2 ] >>>>> #index 8 [-<<<<<<<<+>>>>>>>>]#如果猜对了,则把index8猜测的全局变量移动到给index 0
# 代码(装逼版,纯指令)
,>,[[->+>+<<]<[->>>>+>+<<<<<]>>>>>>>>+[-<+<+>>]<[->+<]<[-<<<+>>>]<<<[->-<]>[>[-<<<<<+>>>>>]<<<[-<+>]]>>[-]<<<]>>>>>[-<<<<<<<<+>>>>>>>>]
好家伙,文章写的比我快