Python(4)-24點小遊戲計算
給定任意四個正整數,任意使用 + - * / ( ) ,構造出一個表達式,使得最終結果為24
下面是一種解法,本來用eval代碼可以更精簡的,不過eval一般不推薦使用,有興趣的同學可以自己試試
import itertoolsa=5 5 5 1#a=9 3 6 2b=list(map(lambda i:int(i),a.split()))c=map(lambda i:list(i),set(itertools.permutations(b)))def f1(x,y,n): if n==0: x+=y elif n==1: x-=y elif n==2: x*=y elif n==3 and y!=0: x/=y else: x=999999999 return xf2=[+,-,*,/]d=set(itertools.permutations(range(4),3))e=set(itertools.product(range(3),range(2)))for i in c: for j in d: for k in e: v=f1(i[k[0]],i[k[0]+1],j[0]) l=i[0:k[0]]+[v]+i[k[0]+2:] v=f1(l[k[1]],l[k[1]+1],j[1]) m=l[0:k[1]]+[v]+l[k[1]+2:] v=f1(m[0],m[1],j[2]) if v==24: u1=(%s%s%s)%(i[k[0]],f2[j[0]],i[k[0]+1]) l[k[0]]=u1 u2=(%s%s%s)%(l[k[1]],f2[j[1]],l[k[1]+1]) m[k[1]]=u2 u=(%s%s%s)=24%(m[0],f2[j[2]],m[1]) print(u)
推薦閱讀:
※excel分析工具庫
※數據驅動增長?看了太多虛假的成功,我們來看看真實的失敗(上集)
※一篇文章入門Python
※Prime漲價了?趕緊買Amazon股票!
※啞變數在數據挖掘中的使用