|
|
# -*- encoding: utf-8 -*-
|
|
|
"""
|
|
|
@Author: packy945
|
|
|
@FileName: data.py
|
|
|
@DateTime: 2023/5/11 14:36
|
|
|
@SoftWare: PyCharm
|
|
|
"""
|
|
|
from itertools import permutations
|
|
|
import random
|
|
|
import tkinter as tk
|
|
|
|
|
|
MARK = '#ff0000'
|
|
|
NOMARK = '#cccccc'
|
|
|
|
|
|
|
|
|
class Aexp:
|
|
|
def __init__(self, a, b, c, d):
|
|
|
self.Aexp_cur = 0
|
|
|
self.num = 0
|
|
|
self.card = [a, b, c, d]
|
|
|
# print(self.card)
|
|
|
self.answer = []
|
|
|
self.Color = []
|
|
|
self.Aexp(a, b, c, d)
|
|
|
|
|
|
def refresh(self, a, b, c, d):
|
|
|
self.Aexp_cur = 0
|
|
|
self.num = 0
|
|
|
self.card = [a, b, c, d]
|
|
|
# print(self.card)
|
|
|
self.answer = []
|
|
|
self.Color = []
|
|
|
self.Aexp(a, b, c, d)
|
|
|
|
|
|
def Aexp(self, one, two, three, four):
|
|
|
'''
|
|
|
输入四个数,求24点
|
|
|
:param one:
|
|
|
:param two:
|
|
|
:param three:
|
|
|
:param four:
|
|
|
:return: 求解24点结果。若无法得出则返回“无法求得结果”
|
|
|
'''
|
|
|
self.Aexp_cur = 0
|
|
|
my_list = [one, two, three, four]
|
|
|
result = [c for c in permutations(my_list, 4)]
|
|
|
list2 = [] # 算出24的排列组合的列表
|
|
|
symbols = ["+", "-", "*", "/"]
|
|
|
flag = False
|
|
|
for one, two, three, four in result:
|
|
|
for s1 in symbols:
|
|
|
for s2 in symbols:
|
|
|
for s3 in symbols:
|
|
|
express = ["(({0}{1}{2}){3}{4}){5}{6}".format(one[1], s1, two[1], s2, three[1], s3, four[1]),
|
|
|
"({0}{1}{2}){3}({4}{5}{6})".format(one[1], s1, two[1], s2, three[1], s3, four[1]),
|
|
|
"({0}{1}({2}{3}{4})){5}{6}".format(one[1], s1, two[1], s2, three[1], s3, four[1]),
|
|
|
"{0}{1}(({2}{3}{4}){5}{6})".format(one[1], s1, two[1], s2, three[1], s3, four[1]),
|
|
|
"{0}{1}({2}{3}({4}{5}{6}))".format(one[1], s1, two[1], s2, three[1], s3, four[1])]
|
|
|
# if str(one) + str(two) + str(three) + str(four) == "8383":
|
|
|
# print(express)
|
|
|
for e in express:
|
|
|
try:
|
|
|
if round(eval(e), 6) == 24:
|
|
|
e = del_parentheses(e)
|
|
|
list2.append(e)
|
|
|
self.Color.append([one[0], two[0], three[0], four[0]])
|
|
|
flag = True
|
|
|
except ZeroDivisionError:
|
|
|
pass
|
|
|
|
|
|
|
|
|
if flag:
|
|
|
self.answer = list2
|
|
|
self.num = len(list2)
|
|
|
# return list3
|
|
|
|
|
|
else:
|
|
|
self.answer = ["无法得出24点"]
|
|
|
self.Color.append(None)
|
|
|
self.num = 0
|
|
|
|
|
|
|
|
|
#删除最外层括号
|
|
|
def del_parentheses(e):
|
|
|
if e[0] == '(' and e[-1] == ')':
|
|
|
try:
|
|
|
eval(e[1:len(e)-1])
|
|
|
except:
|
|
|
pass
|
|
|
else:
|
|
|
if round(eval(e[1:len(e)-1]),6) == 24:
|
|
|
return e[1:len(e)-1]
|
|
|
return e
|
|
|
|
|
|
|
|
|
|