Re: [閒聊] 益智小遊戲(算21點)

看板puzzle (益智遊戲 - 數獨,拼圖,推理,西洋棋)作者 (Beware of the Monkey)時間19年前 (2005/06/14 17:49), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串8/8 (看更多)
※ 引述《paygo (新氣象[照])》之銘言: : 請問一下 1 5 8 13 : 這個的解是(8 - 1)x[13/5] 嗎 : 如果不是的話,那答案應該是什麼呀,如果可以的話請寄到我信箱好嗎? : 謝謝唷,好想知道答案...>_< 用下面這個 python 程式配上計算分數的 module mxNumber 可以算出答案, (不過其實自己排一排都可以排出來的) from mx.Number import * b,sol,r=[Rational(x) for x in [1,5,8,13]],21,range(7) def div(x,y): if y==0: return -10000 return x/y op={lambda x,y:x+y:"+", lambda x,y:x-y:"-", lambda x,y:x*y:"*", div:"/"} s7=reduce(lambda s,i:[l+[j] for l in s for j in r if j not in l],r,[[]]) chk=lambda s:min([n-2*len([i for i in s[:n+1] if i>3]) for n in r])>=0 def evaluate(s): s1,s2=[],[] for i in s: if type(i)==type(div): s1.append(i(s1.pop(),s1.pop())) s2.append("(%s%s%s)"%(s2.pop(),op[i],s2.pop())) else: s1.append(i) s2.append("%d"%i.numerator) return s1[0],s2[0] for o in [[i,j,k] for i in op for j in op for k in op]: for p in filter(chk,s7): rtn=evaluate([(b+o)[i] for i in p]) if rtn[0]==sol: print rtn[1]+"=%d"%sol -- http://weijr.b81.org/poker 賭聖的秘密情人 That's No Limit, Baby! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 69.235.17.139 ※ 編輯: weijr 來自: 69.235.17.139 (06/14 18:25)
文章代碼(AID): #12hgWLJP (puzzle)
討論串 (同標題文章)
文章代碼(AID): #12hgWLJP (puzzle)