python计算24点游戏_Python(4)-24点小游戏计算

给定任意四个正整数,任意使用 + - * / ( ) ,构造出一个表达式,使得最终结果为24

下面是一种解法,本来用eval代码可以更精简的,不过eval一般不推荐使用,有兴趣的同学可以自己试试

import itertools

a='5 5 5 1'

#a='9 3 6 2'

b=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 x

f2=['+','-','*','/']

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值