今天看视频 突然想到以前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])