首页 > 编程语言 >算法练习:求24点

算法练习:求24点

时间:2022-11-23 22:34:01浏览次数:40  
标签:24 练习 lst s6 算法 del eval nlist


小学三年级的儿子在玩 四个数字 求24的游戏,经常来考我。 有些还真不是一下子就能想到。

python写了个求解的算法,再也不用费脑了。

def s6(lstnum):
lst = lstnum[:]
if len(lst) == 1:
try:
if eval(lst[0]) == 24:
print(lst)
except:
pass
else:
for i in range(0, len(lst)):
for j in range(0, len(lst)):
if i != j:
nlist = lst[:]
if i > j:
del nlist[i]
del nlist[j]
else:
del nlist[j]
del nlist[i]
for c in '*/+-':
#if c == '-' and eval('%s' % lst[i]) < eval('%s' % lst[j]): continue
if c == '/':
if eval('%s'%lst[j]) == 0:continue
# if eval('%s' % lst[i]) < eval('%s' % lst[j]): continue
s = '(%s%s%s)' % (lst[i], c, lst[j])
tmp = nlist[:]
tmp.append(s)
s6(tmp)
s6([3,1,7,8])


#--------------------

['(8*(7-(3+1)))']
['((7-(3+1))*8)']
['(8*(7-(1+3)))']
['((7-(1+3))*8)']
['(8*((7-3)-1))']
['(((7-3)-1)*8)']
['(8*((7-1)-3))']
['(((7-1)-3)*8)']
['(3/(1-(7/8)))']

标签:24,练习,lst,s6,算法,del,eval,nlist
From: https://blog.51cto.com/fangkailove/5881787

相关文章