24点游戏的暴力美学
输入处理:首先读取输入的四个牌,检查是否包含joker或JOKER,如果有,输出错误信息。 数字转换:将每个牌转换为对应的数值,例如'A'转换为1,'J'转换为11等。 排列组合生成:生成所有可能的四个数字的排列组合。 运算符组合:对于每个排列,尝试所有可能的运算符组合(加减乘除)。 运算顺序模拟:使用栈的方式模拟从左到右的运算顺序,逐步计算每一步的结果。 结果检查:如果某个排列和运算符组合的结果等于24,输出对应的算式;如果所有可能性都尝试过仍未找到解,输出“NONE”。 输入处理:读取输入的四个牌,并检查是否包含joker或JOKER,输出错误信息并退出程序。 数字转换:将每个牌转换为对应的数值,存储在列表中。 排列组合生成:使用 运算符组合:使用 运算顺序模拟:定义 结果检查:对于每个排列和运算符组合,计算结果,判断是否等于24,输出对应的算式并退出程序;如果所有可能性都尝试过仍未找到解,输出“NONE”。
发布日期:2025-06-19 06:52:40
浏览次数:4
分类:精选文章
本文共 2007 字,大约阅读时间需要 6 分钟。
为了解决这个问题,我们需要找到一种方法来计算24点游戏,通过给定的四个扑克牌的数字组合,使用加减乘除运算得到24点。扑克牌的数字和特殊符号(如joker和JOKER)需要被正确转换,并且运算顺序必须严格按照从左到右的顺序进行,不考虑运算符的优先级。
方法思路
解决代码
from itertools import permutations, productpoker_list = input().split()# 检查是否有joker或JOKERif any(card in ['joker', 'JOKER'] for card in poker_list): print("ERROR") exit()# 定义每个牌的权值poker_values = { 'A': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 11, 'Q': 12, 'K': 13, 'joker': 2, 'JOKER': 10}# 转换为数值列表cards = [poker_values[card] for card in poker_list]def compute_order(a, op1, b, op2, c, op3, d): stack = [a, b, c, d] ops = [op1, op2, op3] current = a for i in range(len(ops)): op = ops[i] next_num = stack.pop() if op == '+': current += next_num elif op == '-': current -= next_num elif op == '*': current *= next_num elif op == '/': if next_num == 0: return None # 除以零,无法计算 current /= next_num return current# 遍历所有排列组合for perm in permutations(cards): for ops in product(['+', '-', '*', '/'], repeat=3): a, b, c, d = perm op1, op2, op3 = ops result = compute_order(a, op1, b, op2, c, op3, d) if result is not None and abs(result - 24) < 1e-9: print(f"{a}{op1}{b}{op2}{c}{op3}{d}") exit()print("NONE") 代码解释
itertools.permutations生成所有可能的四个数字的排列组合。itertools.product生成所有可能的运算符组合(加减乘除)。compute_order函数,使用栈的方式模拟从左到右的运算顺序,逐步计算每一步的结果。这个方法通过生成所有可能的排列组合和运算符组合,结合严格的运算顺序模拟,确保能够找到所有可能的解法,从而正确解决24点问题。
发表评论
最新留言
很好
[***.229.124.182]2026年05月28日 15时47分41秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP学习总结(2)——PHP入门篇之PHP代码标识
2023-03-01
PHP学习总结(3)——PHP入门篇之PHP的echo语句
2023-03-01
PHP学习总结(4)——PHP入门篇之PHP计算表达式
2023-03-01
PHP学习总结(5)——PHP入门篇之PHP字符串
2023-03-01
PHP学习总结(6)——PHP入门篇之PHP语句结束符
2023-03-01
PHP学习总结(7)——PHP入门篇之PHP注释
2023-03-01
rabbitmq重启失败
2023-03-01
PHP学习总结(9)——PHP入门篇之WAMPServer服务控制面板介绍
2023-03-01
php学习笔记---php调试和开发工具整理
2023-03-01
PHP学习笔记一:谁动了你的mail(),PHP?
2023-03-01
PHP安全实战
2023-03-01
php安装扩展
2023-03-01
rabbitmq重启
2023-03-01
php实现上传(多个)文件函数封装
2023-03-01
php实现下载文件方法
2023-03-01
php实现单链表
2023-03-01
php实现图片背景换色功能
2023-03-01
php实现多个一维数组对应合并成二维数组
2023-03-01
php实现多关键字查找方法
2023-03-01
PHP实现微信公众号H5支付
2023-03-01