简易版的24点游戏

1、列出四个数的所有排序序列组合(共有A44=24种组合)。

2、定义一个函数,列出所有运算表达式:(1没括号a*b*c*d;2有括号(a * b) * c * d;3有括号的(a * b * c) * d;4有括号的a * (b * c) * d;5有括号的(a * b) * (c * d);6有括号的((a * b) * c) * d;7有括号的(a * (b * c)) * d。)

3、输入数据计算。

import itertools
from random import randint
R=[]
def Calculate (x,y,z,w):#列出固定排序的数加减乘除以及括号的所有排列组合方式.
    try:
        if x+y+z+w==24:
            print(x,'+',y,'+',z,'+',w,'=24')
        if x+y+z-w==24:
            print(x,'+', y,"+", z,'-', w,'=24')
        if (x+y)*(z+w)==24:
            print('(',x,'+', y,')','*(', z,'+', w,')','=24')
        if (x-y)*(z+w)==24:
            print('(', x, '-', y, ')', '*(', z, '+', w,')','=24')
        if (x-y)*(z-w)==24:
            print('(', x, '-', y, ')', '*(', z, '-', w,')','=24')
        if ((x+y+z)*w==24):
            print('(',x,'+', y,'+', z,')*', w,'=24')
        if (x-y-z)*w==24:
            print('(', x, '-', y, '-', z, ')*', w,'=24')
        if (x+y-z)*w==24:
            print('(', x, '+', y, '-', z, ')*', w,'=24')
        if (x*y*z)/w==24:
            print('(', x, '*', y, '*', z, ')/', w,'=24')
        if (x*y)*(z+w)==24:
            print('(', x, '*', y, ')', '*(', z, '+', w,')','=24')
        if (x*y)*(z-w)==24:
            print('(', x, '*', y, ')', '*(', z, '-', w,')','=24')
        if (x*y)*z-w==24:
            print('(', x, '*', y, ')', '*', z, '-', w,'=24')
        if (x*y)*z+w==24:
            print('(',x,'*', y,')','*', z,'+', w,'=24')
        if x*y*z*w==24:
            print(x,'*', y,'*', z,"*", w,'=24')
        if (x+y)+(z/w)==24:
            print('(', x, '+', y, ')', '*(', z, '/', w, ')','=24')
        if (x+y)*(z/w)==24:
            print('(', x, '+', y, ')', '*(', z, '/', w, ')','=24')
        if (x*y)+z+w==24:
            print('(', x, '*', y, ')', '+', z, '+', w,'=24')
        if (x*y)+z-w==24:
            print('(', x, '*', y, ')', '+', z, '-', w,'=24')
        if (x*y)-(z/w)==24:
            print('(', x, '*', y, ')', '-(', z, '/', w, ')','=24')
        if (x*y)+(z/w)==24:
            print('(', x, '*', y, ')', '+(', z, '/', w, ')','=24')
        if (x*y)-z-w==24:
            print('(', x, '*', y, ')', '-', z, '-', w,'=24')
        if (x*y)+(z*w)==24:
            print('(', x, '*', y, ')', '+(', z, '*', w, ')','=24')
        if (x*y)-(z*w)==24:
            print('(', x, '*', y, ')', '-(', z, '*', w, ')','=24')
        if (x*y)/(z*w)==24:
            print('(', x, '*', y, ')', '/(', z, '*', w, ')','=24')
        if (x*y)/(z-w)==24 :
            print('(', x, '*', y, ')', '/(', z, '-', w, ')','=24')
        if (x*y)/(z+w)==24:
            print('(', x, '*', y, ')', '/(', z, '+', w, ')','=24')

    except Exception as e:
        print(e)
L = [randint(1,14),randint(1,14),randint(1,14),randint(1,14)]#生成四个随机牌
l = list(itertools.permutations(L,4))#将生成的四个随机数排列组合,生成列表
print('随机牌为',L[0],L[1],L[2],L[3])
for i in l:
    Calculate(i[0],i[1],i[2],i[3])

猜你喜欢

转载自blog.csdn.net/weixin_39242012/article/details/82953517