今天看视频 突然想到以前edward说过的那道写24点c语言程序。随便用python写了下。 但是这都是无重复数字 重复运算符号版本

import itertools
'''election ={1:"Barb",2:"Karen",3:"Erin"}
for p in itertools.permutations(election):
    print(p)


for p1 in itertools.permutations(election.values()):
    print(p1)

co=["work","eat","play"]
colorForPainting = ["Red","Blue","Purple","Orange","Yellow","Pink"]
for c in itertools.combinations(colorForPainting,2):
    print(c)
'''
numcombinSet=[]
opcombinSet=[]
a=list(range(1,11))

answer=0
good_num=[]
good_op=[]
#test_num=[4,7,1,5]
#test_op=["mul","plus","minus"]
def alu(numm,opp):
    answer = numm[0]
    for i in range(3):

        if opp[i] == "plus":
            answer=answer+numm[i+1]
        elif opp[i] == "minus":
            answer=answer-numm[i+1]
        elif opp[i] == "mul":
            answer=answer*numm[i+1]
        elif opp[i] == "divide":
            answer=answer/numm[i+1]
        else:
            raise "op error"
    print(answer)
#

    if answer == 24:
        good_num.append(numm)
        good_op.append(opp)
    else:
        pass
#        print("not found")
 #      pass
#alu(test_num,test_op)
#print(answer)



for numcombin in itertools.permutations(a,4):
    numcombinSet.append(numcombin)
b=["plus","minus","mul","divide"]
for op in itertools.permutations(b,3):
    opcombinSet.append(op)
print(opcombinSet[1])

len_numcombin=len(numcombinSet)
len_opcombin=len(opcombinSet)
print("num have "+str(len_numcombin))
print("op have "+str(len_opcombin))
for i in range(len_numcombin):
    for j in range(len_opcombin):
        num_test=numcombinSet[i]
        op_test=opcombinSet[j]
        alu(num_test,op_test)

print(good_num)
#print(numcombinSet[1])
#print(opcombinSet[0])

  

posted on 2017-10-15 22:18  uxiuxi  阅读(1386)  评论(0)    收藏  举报