用Python写一份关于24点游戏算法的程序
下面是一个使用Python编写的24点游戏算法程序示例:
import itertools
def calculate24(numbers):
operators = ['+', '-', '*', '/']
perms = list(itertools.permutations(numbers))
for perm in perms:
for ops in itertools.product(operators, repeat=3):
expression = f"(({perm[0]} {ops[0]} {perm[1]}) {ops[1]} {perm[2]}) {ops[2]} {perm[3]}"
try:
result = eval(expression)
if result == 24:
return expression
except ZeroDivisionError:
pass
return "No solution."
# 测试
numbers = [4, 7, 8, 8]
solution = calculate24(numbers)
print(f"Solution for {numbers}: {solution}")
这个程序使用了itertools库中的permutations函数来生成给定数字的所有可能排列,然后使用了product函数来生成运算符的所有可能组合。程序通过嵌套循环遍历每个排列和运算符组合,构建表达式并通过eval函数计算结果。如果结果等于24,则返回表达式,否则继续尝试下一个排列和运算符组合。如果所有组合都没有得到结果为24的表达式,则返回"No solution."。
注意:这个程序只能找到四个数字能否通过加减乘除得到24的解,如果有多个解,它只会返回其中一个解
原文地址: http://www.cveoy.top/t/topic/hLF9 著作权归作者所有。请勿转载和采集!