题目描述

24点是一种益智游戏,任意给出4张扑克牌(不含大小王,J Q K A所代表的值分别为11, 12, 13, 1),可以有重复的数字。对这4张牌所代表的值进行加减乘除运算,不可改变数字的位置,但可使用括号改变运算顺序,最终使得表达式的值为24 。

在answer.py中实现下列函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def twenty_four_calc(filename="24_data.txt"):
"""
:param filename: 文件名,当前文件夹下包含待计算的扑克牌符号的文件,
每行一组(用于评比的文件可能多达数百行),以空格分割,
具体格式如下:
A A 3 4
Q J K 2
10 9 5 A
...
:return : 此函数无返回结果,但需要将所有的解输出至当前文件夹下的
"24_answer_<yourname>.txt" 中,将<yourname>替换为你的
github用户名,文件格式如下:
===A A A A
Impossible

===10 9 5 A
((10+9)+5)/1
10+((9+5)/1)
(10+(9+5))/1
10+(9+(5/1))
(10+9)+(5/1)
((10+9)+5)*1
10+((9+5)*1)
(10+(9+5))*1
10+(9+(5*1))
(10+9)+(5*1)

===A A 3 4
...(省略)
"""

pass

题目要求

  1. 所有输入输出均以UTF8编码形式处理;
  2. 只允许使用CPython标准库和内置函数提供的方法、模块;
  3. 必须能运行出结果;
  4. Python 版本仅限于 2.7 或 3.4+, 小版本号不限;
  5. 必须符合PEP8编码风格, 会进行编码风格检查.

评比规则

能完全正确计算出所有解,并输出答案,用时最少。其他基本规则见“帮助”页面。

提交答案

参考 “帮助” 页面