【python】24点游戏算法

使用Python编写代码,通过遍历所有可能的运算符组合,解决从1到13中随机抽取4张牌,利用加减乘除运算得到24点的问题。代码通过eval函数计算表达式并检查结果是否等于24,找出所有可行的解决方案。
摘要由CSDN通过智能技术生成

从 1-13 中随机抽出 4 张牌(不允许重复),任意填入运算符"+ 、- 、\* 、/"(分别表示加、减、乘、除),使得计算的结果为 24。

代码:

import random
 
lst = random.sample(range(1, 14), 4)
list(lst)
print("随机生成的四个数为:", lst)
lsty = ['+', '-', '*', '/']
list(lsty)
flag = 0
count=0
# print(lst[0])
# print(lst[1])
# print(lst[2])
# print(lst[3])
 
for x in range(4):
    for a in range(4):
        for y in range(4):
            for b in range(4):
                for z in range(4):
                    for c in range(4):
                        for w in range(4):
                            if lst[x] != lst[y] and lst[x] != lst[z] and lst[x] != lst[w] and lst[y] != lst[z] and lst[
                                y] != lst[w] and lst[z] != lst[w]:
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python二十四点游戏代码可以通过使用逆波兰表达式和回溯算法来实现,具体步骤如下: 1. 生成所有可能的四个数字的排列组合; 2. 对于每个排列组合,生成所有可能的运算符排列组合; 3. 将每个运算符排列组合和数字排列组合组合成逆波兰表达式; 4. 利用栈来计算逆波兰表达式的值,如果计算结果为24,则找到一组解; 5. 如果所有的排列组合和运算符排列组合都被尝试过,但是没有找到结果,则无解。 下面是一个简单的Python代码示例: ```python import itertools # 计算逆波兰表达式的值 def calc(exp): stack = [] for e in exp: if isinstance(e, int): stack.append(e) else: b = stack.pop() a = stack.pop() if e == "+": stack.append(a + b) elif e == "-": stack.append(a - b) elif e == "*": stack.append(a * b) elif e == "/": stack.append(a / b) return stack # 生成所有可能的四个数字的排列组合 def generate_numbers(): return list(itertools.permutations(range(1, 14), 4)) # 生成所有可能的运算符排列组合 def generate_operators(): return list(itertools.product(["+", "-", "*", "/"], repeat=3)) # 将运算符排列组合和数字排列组合组合成逆波兰表达式 def generate_expression(numbers, operators): result = [] for i in range(3): result.extend([numbers[i], operators[i]]) result.append(numbers) return result # 判断逆波兰表达式是否可以计算出24 def is_solution(expression): try: return calc(expression) == 24 except ZeroDivisionError: return False # 找到一组解 def find_solution(): numbers = generate_numbers() operators = generate_operators() for n in numbers: for o in operators: expression = generate_expression(n, o) if is_solution(expression): return expression return None # 输出一组解 solution = find_solution() if solution: print("Found a solution:", " ".join(str(e) for e in solution)) else: print("No solution found.") ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值