前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >暴力测试也疯狂——论Python代码优化

暴力测试也疯狂——论Python代码优化

作者头像
Python小屋屋主
发布2018-04-16 16:00:08
7090
发布2018-04-16 16:00:08
举报
文章被收录于专栏:Python小屋Python小屋

问题描述:在123456789这9个数字中间插入任意多个+和-的组合,使得表达式的值为100,输出所有符合条件的表达式。

对于该问题,前天推送了一个暴力测试的代码,通过itertools标准库的combinations()函数获得插入位置,然后通过itertools标准库的permutations()函数获得+和-的排列,最后构造表达式并测试其值是否为100,详见Python查找所有类似于123-45-67+89 = 100的组合

但是第一个版本的代码运行速度太慢,大概需要3.5小时。于是昨天推送了中国传媒大学胡凤国老师提出后我来实现的一个三进制算法,使用三进制加法来生成运算符的插入位置,其实也是一种暴力测试,但是由于大幅度减少了无效运算符排列,使得代码运行速度很快,瞬间就能输出结果,详见Python使用超高效算法查找所有类似123-45-67+89=100的组合

后经热心屋友@G_C提醒,第一个版本的暴力测试代码其实是可以优化提速的,于是有了今天的第三个版本的代码。

核心思路:减少不必要的计算。

参考代码与优化要点:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档