解24点,,[Python]代码#!


[Python]代码

#!/usr/bin/python# coding:utf-8'''简介:本脚本用于计算24点'''import math,sys,osdef _cal(a,b):    temp={'+':a+b,'-':a-b,'--':b-a,'*':a*b}    if b!=0 and a!=0:        temp['/']=float(a)/b        temp['\\']=float(b)/a    return tempdef cal(num):    for i0 in num:        for i1 in num:            if i1==i0:                continue            else:                for i2 in num:                    if i2==i1 or i2==i0:                        continue                    else:                        for i3 in num:                            if i3==i1 or i3==i0 or i3==i2:                                continue                            else:                                temp1=_cal(num[i0],num[i1])                                for k1 in temp1:                                    temp2=_cal(temp1[k1],num[i2])                                    for k2 in temp2:                                        temp3=_cal(temp2[k2],num[i3])                                         for k3 in temp3:                                            if temp3[k3]==24:                                                print '((%d%s%d)%s%d)%s%d=24' %(num[i0],k1,num[i1],k2,num[i2],k3,num[i3])                                                return True    return False    print 'fail'#单独测试一组test=[1,2,4,9]num={1:test[0],2:test[1],3:test[2],4:test[3]}cal(num)'''#查看所有的无解组Max=15fail=0failist=[]for i1 in range(1,Max):    for i2 in range(1,Max):        for i3 in range(1,Max):            for i4 in range(1,Max):                num={1:i1,2:i2,3:i3,4:i4}                if not cal(num):                    temp=[num[1],num[2],num[3],num[4]]                    temp.sort()                    if temp not in failist:                        failist.append(temp)                        fail=fail+1print failistprint 'all:%d,fail:%d' %(15**4,fail)#无解个数721'''

评论关闭