python算法24点
现在的小学生的课后作业是算24点,看了一下题目,发现都挺难的,只能用加减乘除,算出24点。
都开始使用分数(小数)来计算24点了,发现心算不容易,于是从网上找找,用Python写了一个程序来算。
把下面的代码保存到24.py文件
def solution(numbers): res = set() def point24(numbers): if len(numbers) == 1: if abs(eval(numbers[0]) - 24) < 1e-10: res.add(numbers[0]) else: for i in range(len(numbers)): for j in range(i + 1, len(numbers)): # 剩下的数字 rest_numbers = [x for p, x in enumerate(numbers) if p != i and p != j] for op in "+-*/": if eval(str(numbers[j])) != 0: point24(["(" + str(numbers[i]) + op + str(numbers[j]) + ")"] + rest_numbers) if op == "-" or (op == "/" and eval(str(numbers[i])) != 0): # 要考虑相反的情况 point24(["(" + str(numbers[j]) + op + str(numbers[i]) + ")"] + rest_numbers) point24(numbers) print("Found %d solutions." %len(res)) for i, s in enumerate(res): print("%d: %s = 24" %(i+1, s)) print("\n") solution([5, 5, 5, 1]) solution([1, 3, 4, 6]) solution([10, 10, 4, 4]) solution([10, 5, 2, 1])
在命令行中执行python 24.py,就可以看到结果了。
参考出处:https://zhuanlan.zhihu.com/p/37608401
在什么的文章中,评论请给出了其他的算法实现,有兴趣的都可以试试。
不过,我比较赞同”表达式树是做24点的基本工具“的说法。
关注我】。(●'◡'●)
如果,您希望更容易地发现我的新博客,不妨点击一下绿色通道的【因为,我的写作热情也离不开您的肯定与支持,感谢您的阅读,我是【Jack_孟】!
本文来自博客园,作者:jack_Meng,转载请注明原文链接:https://www.cnblogs.com/mq0036/p/17283129.html
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
2020-04-03 Git 常用命令
2020-04-03 Git使用教程
2020-04-03 一个小时学会Git
2020-04-03 【WPF学习】 ---- 系列文章
2019-04-03 webbrowser 里的js函数和C#的函数互相调用方式