2004年08月13日 星期五 09:42
24点有意思,我记得曾经有人问我“ 0 0 0 0”(4个0)怎么算24点,哈哈! -----邮件原件----- 发件人: python-chinese-bounces at lists.python.cn [mailto:python-chinese-bounces at lists.python.cn] 代表 hoxide 发送时间: 2004年8月12日 22:14 收件人: python-chinese 主题: [python-chinese] 一个计算24点(或n点)的程序. 今天在网上同学求教1 5 6 7 用+-*/ 算出21. 自己曾经写过一个,但代码找不到了,偶 知道24点的程序很多的说, 于是到网上搜了一下. 是有不少, 但是一个用c++的(其实根本就不能叫用c++,全是c的语法), 试了n多 次,borlandc3.1和gcc都不能编译. 还找到了vb,和web版的,看来都没用. 在偶找东西 搞得焦头烂额的时候,偶同学自己算出来了.(到底怎么算用这个程序试试吧) 为了以后不被这种问题困扰,花一个小时用python自己写了一个,还是python好~~~~~~~ funs = [ lambda x, item: (x+item[0], str(x)+'+('+item[1]+')' ), lambda x, item: (x-item[0], str(x)+'-('+item[1]+')' ), lambda x, item: (item[0]-x, '('+item[1]+')-'+str(x) ), lambda x, item: (x*item[0], str(x)+'*('+item[1]+')' ), lambda x, item: (item[0]==0 and (0,'ZZZ')) or \ (x/item[0], str(x)+'/('+item[1]+')' ), lambda x, item: (x==0 and (0,'ZZZ')) or \ (item[0]/x, '('+item[1]+')/'+str(x) ) ] def con(num): l = len(num) p = list() if l==1: return {num[0]:str(num[0])} for i in range(l): for f in funs: p += map(lambda item: f(num[i],item), con(num[:i]+num[i+1:]).items() ) return dict(p) print con(map(float,[1,5,6,7])).get(21.0,0) 代码我就不解释了,有问题就问吧. 另外由于浮点计算的误差问题,".get(21.0,0"这句还不太完善,不过解决这个问题足够 了,具体怎么完善大家都知道拉. hoxide hoxide_dirac at yahoo.com.cn 2004-08-12
2004年08月13日 星期五 09:46
黎达文,您好! 起码有2种完全不一样的做法 ======= 2004-08-13 09:42:00 您在来信中写道:======= >24点有意思,我记得曾经有人问我“ 0 0 0 0”(4个0)怎么算24点,哈哈! > >-----邮件原件----- >发件人: python-chinese-bounces at lists.python.cn >[mailto:python-chinese-bounces at lists.python.cn] 代表 hoxide >发送时间: 2004年8月12日 22:14 >收件人: python-chinese >主题: [python-chinese] 一个计算24点(或n点)的程序. > >今天在网上同学求教1 5 6 7 用+-*/ 算出21. 自己曾经写过一个,但代码找不到了,偶 >知道24点的程序很多的说, 于是到网上搜了一下. >是有不少, 但是一个用c++的(其实根本就不能叫用c++,全是c的语法), 试了n多 >次,borlandc3.1和gcc都不能编译. 还找到了vb,和web版的,看来都没用. 在偶找东西 >搞得焦头烂额的时候,偶同学自己算出来了.(到底怎么算用这个程序试试吧) > >为了以后不被这种问题困扰,花一个小时用python自己写了一个,还是python好~~~~~~~ > >funs = [ lambda x, item: (x+item[0], > str(x)+'+('+item[1]+')' > ), > lambda x, item: (x-item[0], > str(x)+'-('+item[1]+')' > ), > lambda x, item: (item[0]-x, > '('+item[1]+')-'+str(x) > ), > lambda x, item: (x*item[0], > str(x)+'*('+item[1]+')' > ), > lambda x, item: (item[0]==0 and (0,'ZZZ')) or \ > (x/item[0], > str(x)+'/('+item[1]+')' > ), > lambda x, item: (x==0 and (0,'ZZZ')) or \ > (item[0]/x, > '('+item[1]+')/'+str(x) > ) >] > >def con(num): > l = len(num) > p = list() > if l==1: return {num[0]:str(num[0])} > for i in range(l): > for f in funs: > p += map(lambda item: f(num[i],item), > con(num[:i]+num[i+1:]).items() > ) > return dict(p) > >print con(map(float,[1,5,6,7])).get(21.0,0) > > >代码我就不解释了,有问题就问吧. > >另外由于浮点计算的误差问题,".get(21.0,0"这句还不太完善,不过解决这个问题足够 >了,具体怎么完善大家都知道拉. > > hoxide > hoxide_dirac at yahoo.com.cn > 2004-08-12 >_______________________________________________ >python-chinese list >python-chinese at lists.python.cn >http://python.cn/mailman/listinfo/python-chinese = = = = = = = = = = = = = = = = = = = = 致 礼! guochen guochen at 1218.com.cn 2004-08-13
Zeuux © 2025
京ICP备05028076号