24点游戏，顾名思义，就是一种得数为24的数学游戏。

24点游戏中每张牌必须只能用一次，如抽出的牌是3、8、8、9，那么算式为（9－8）×8×3或3×8÷（9－8）或（9－8÷8）×3等。

# 数字列表
b = [2,3, 12, 13]
# 结果列表
l = []
for i in range(4):
for j in range(4):
for m in range(4):
for n in range(4):
a=b.copy()
if i!=j and i!=m and i!=n and j!=m and j!=n and m!=n:
l.append([a[i], a[j], a[m], a[n]])
print(l)

[[2, 3, 12, 13], [2, 3, 13, 12], [2, 12, 3, 13],

[2, 12, 13, 3], [2, 13, 3, 12], [2, 13, 12, 3],

[3, 2, 12, 13], [3, 2, 13, 12], [3, 12, 2, 13],

[3, 12, 13, 2], [3, 13, 2, 12], [3, 13, 12, 2],

[12, 2, 3, 13], [12, 2, 13, 3], [12, 3, 2, 13],

[12, 3, 13, 2], [12, 13, 2, 3], [12, 13, 3, 2],

[13, 2, 3, 12], [13, 2, 12, 3], [13, 3, 2, 12],

[13, 3, 12, 2], [13, 12, 2, 3], [13, 12, 3, 2]]

• 从左往右

任意两个数中都有+-*/的算法，这里我们可以使用三个for循环解决。比如2，3，12，13，先计算2和3的结果result1,然后计算result1与12的结果result2,最后计算result2与13的结果。

例子：​2-3+12+13

• 两两组合

先计算前两个数的结果result4,然后计算后两个数的结果result5,最后计算result4与result5的结果。

例子：​(2-3)+(12+13)

# 随意拿一个组合
item = [2,3, 12, 13]
# 操作符列表
operators = ["+","-","*","/"]
# 遍历所有符号可能的情况
for i in operators:
for j in operators:
for m in operators:
# 从左到右的组合
result1 = eval(f"{item[0]}{i}{item[1]}")
result2 = eval(f"{result1}{j}{item[2]}")
result3 = eval(f"{result2}{m}{item[3]}")
if result3 ==24:
print(f"{item[0]}{i}{item[1]}{j}{item[2]}{m}{item[3]}")

# 两两组合
result4 = eval(f"{item[0]}{i}{item[1]}")
result5 = eval(f"{item[2]}{m}{item[3]}")
if result5==0 and j=="/":
continue
else:
result6 = eval(f"{result4}{j}{result5}")
if result6==24 and result5:
print(f"({item[0]}{i}{item[1]}){j}({item[2]}{m}{item[3]})")

2-3+12+13

(2-3)+(12+13)

# 数字列表
b = [2,3, 12, 13]
# 结果列表
l = []
for i in range(4):
for j in range(4):
for m in range(4):
for n in range(4):
a=b.copy()
if i!=j and i!=m and i!=n and j!=m and j!=n and m!=n:
l.append([a[i], a[j], a[m], a[n]])
print(l)

# 操作符列表
operators = ["+","-","*","/"]

# 遍历所有符号可能的情况
for item in l:
for i in operators:
for j in operators:
for m in operators:
# 从左到右的组合
result1 = eval(f"{item[0]}{i}{item[1]}")
result2 = eval(f"{result1}{j}{item[2]}")
result3 = eval(f"{result2}{m}{item[3]}")
if result3 ==24:
print(f"{item[0]}{i}{item[1]}{j}{item[2]}{m}{item[3]}")

# 两两组合
result4 = eval(f"{item[0]}{i}{item[1]}")
result5 = eval(f"{item[2]}{m}{item[3]}")
if result5==0 and j=="/":
continue
else:
result6 = eval(f"{result4}{j}{result5}")
if result6==24 and result5:
print(f"({item[0]}{i}{item[1]}){j}({item[2]}{m}{item[3]})")

(全文完)