Re: [閒聊] 益智小遊戲(算21點)
看板puzzle (益智遊戲 - 數獨,拼圖,推理,西洋棋)作者weijr (Beware of the Monkey)時間19年前 (2005/06/14 17:49)推噓0(0推 0噓 0→)留言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)
討論串 (同標題文章)
puzzle 近期熱門文章
PTT遊戲區 即時熱門文章