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
【免责声明】本文来自源于网络,如涉及版权或侵权问题,请及时联系我们,我们将第一时间删除或更改!