V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
VioletTec
V2EX  ›  问与答

求教:使用 BrainF**k 实现加减乘除还有没有更好的实现思路

  •  1
     
  •   VioletTec · 2020-09-19 10:35:36 +08:00 · 1138 次点击
    这是一个创建于 1537 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近接触到 BrainFuck

    在学校闲着无聊打发时间把加减乘除的运算方法都手写了一遍。

    发现实现减法、乘法和除法特别冗长复杂。

    (一部分原因也是我太懒不想优化指针的移动次数以及格数(狗头)

    乘法和除法还有减法都是暴力穷举方法运算,从 1 开始猜,猜到对为止,所以遇到大数字会很复杂。

    各位 v2er 们有没有更好的解决思路,请求指点。

    仓库地址:https://github.com/KeKe12030/BrainFuckMath

    4 条回复    2021-04-19 21:40:56 +08:00
    geelaw
        1
    geelaw  
       2020-09-19 12:02:23 +08:00 via iPhone
    为什么你的减法和加法区别那么大……

    减法显然是 ,>,[-<->],两个数反复同时减 1

    乘法只要反复做加法即可
    >,>,< 读入因数到 2 3
    [-
    >[->+<<<+>>] 移动 3 到 4 并累加到 1
    >[-<+>]<< 移动 4 到 3
    ]
    >[-] 清空 3

    带余除法可以反复做减法实现,不过要麻烦一些
    geelaw
        2
    geelaw  
       2020-09-19 12:04:18 +08:00 via iPhone
    看了一下原来你的乘法和我的思路一样 - -
    VioletTec
        3
    VioletTec  
    OP
       2020-09-19 13:27:46 +08:00
    @geelaw 啊这,我走极端了,还以为减法很复杂,一时间脑子没转过来(哭)
    感谢提供的除法可以取余的算法的思路,回来去玩一玩。
    VioletTec
        4
    VioletTec  
    OP
       2021-04-19 21:40:56 +08:00
    @geelaw 感谢大佬近一年前的回复。取余除法的坑已经于近日填上了。😂

    https://blog.mcplugin.cn/p/777
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3291 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:29 · PVG 20:29 · LAX 04:29 · JFK 07:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.