- 雜談:玩玩24點
- 0. 引言
- 1. 代碼實作 & 評測
- 2. 一點后續
0. 引言
故事起源于一個寂寞的晚上,一個人無聊就隨手拿出了一副撲克牌,開始玩24點,然而悲劇的是,完了好幾輪,每一輪平均都有2-3組24點算不出來,頓時怒火攻心,不就是4個數字嗎?排列組合也就那么點情況,居然還能搞不定,簡至了,為自己的智商感覺到了深深的悲哀,,,
emmmm,,,
排列組合也就那么幾種情況?!拿自己寫個腳本不就完事了嗎?于是就隨手寫了個24點的作弊腳本,直接機算24點,,,
發現自己真是個小機靈😂
1. 代碼實作 & 評測
如前所述,24點這個游戲本來也挺簡單的,總共也就只有4個數字,允許的運算子號也就加減乘除4種,因此,實作起來也就只要遍歷一下就行了,本質而言沒啥特別的,
直接給出下述代碼實作如下:
from itertools import permutations, product
def twenty_four_point(nums):
print("inputs : {}".format(nums))
for a, b, c, d in permutations(nums):
for op1, op2, op3 in product("+-*/", repeat=3):
y = eval("(({}{}{}){}{}){}{}".format(a, op1, b, op2, c, op3, d))
if y == 24:
print("answer : (({}{}{}){}{}){}{}".format(a, op1, b, op2, c, op3, d))
return True
try:
y = eval("({}{}{}){}({}{}{})".format(a, op1, b, op2, c, op3, d))
if y == 24:
print("answer : ({}{}{}){}({}{}{})".format(a, op1, b, op2, c, op3, d))
return True
except:
continue
print("oops, there is no answer")
return False
評測一些結果得到:
# 1
inputs : [2, 8, 5, 7]
answer : ((2*5)-7)*8
# 2
inputs : [2, 3, 3, 4]
oops, there is no answer
測驗結果整體上還是讓人滿意的!
2. 一點后續
Two thousands years later…
話說,我寫這個腳本是為了幫助計算一些比較難的24點的吧,但是,但是,但是,為毛發現自從寫了這個腳本,反而更加不會算24點了啊?!!!
唉,果然有了作弊工具之后下意識地就開始偷懶了,這真是一個悲傷的故事,,,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/230641.html
標籤:其他
下一篇:二分法原理及代碼實作
