Python论坛  - 讨论区

标题:RE: [python-chinese] 一个计算24点(或n点)的程序.

2004年08月13日 星期五 09:13

Alex Dong adong at Objectivasoftware.com
Fri Aug 13 09:13:28 HKT 2004

上周在火车上无聊,就掏出纸和笔也在考虑这个算法,最后的结果是把这个问题变成:

给定任何n个的数,如何使用四则运算获得m这个结果。

我的大概思想是一个递归加不断规约的过程:
1.对于n个数,从中间任意取出2个数。
2.对这两个数进行计算,把结果存放回原来的数中,现在就有n-1个数。
反复循环1,2两步操作,直到最终只剩下2个数。
在递归的过程中需要记录两个东西:
现有的计算和组合顺序。
未进行的计算顺序,以便于下次穷举。

最近很忙,有时间的时候会尝试把这个算法实现出来。

> -----Original Message-----
> From: python-chinese-bounces at lists.python.cn 
> [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of 
> Zoom.Quiet
> Sent: 2004年8月13日 08:44
> To: hoxide
> Subject: Re: [python-chinese] 一个计算24点(或n点)的程序.
> 
> Hollo hoxide:
> 
>   不懂!
> http://wiki.woodpecker.org.cn/moin.cgi/PyPorgramGames
> 
> 启动了游戏收集!
> 
> hoxide 解说一下子??
> 
> 
> /******** [2004-08-13]08:43:33 ; hoxide wrote:
> 
> hoxide> 今天在网上同学求教1 5 6 7 用+-*/ 算出21. 
> hoxide> 自己曾经写过一个,但代码找不到了,偶知道24点的程序很多的说,
> hoxide> 于是到网上搜了一下.
> hoxide> 是有不少,
> hoxide> 但是一个用c++的(其实根本就不能叫用c++,全是c的语法),
> hoxide> 试了n多次,borlandc3.1和gcc都不能编译.
> hoxide> 还找到了vb,和web版的,看来都没用. 
> hoxide> 在偶找东西搞得焦头烂额的时候,偶同学自己算出来了.(到底怎么算用这个程序试试吧)
> 
> hoxide> 为了以后不被这种问题困扰,花一个小时用python自己写了一个,还是python好~~~~~~~
> 
> hoxide> funs = [ lambda x, item: (x+item[0],
> hoxide>                                str(x)+'+('+item[1]+')'
> hoxide>                               ),
> hoxide>       lambda x, item: (x-item[0],
> hoxide>                                str(x)+'-('+item[1]+')'
> hoxide>                               ),
> hoxide>       lambda x, item: (item[0]-x,
> hoxide>                                '('+item[1]+')-'+str(x)
> hoxide>                               ),
> hoxide>       lambda x, item: (x*item[0],
> hoxide>                                str(x)+'*('+item[1]+')'
> hoxide>                               ),
> hoxide>       lambda x, item:   (item[0]==0 and (0,'ZZZ')) or \
> hoxide>                         (x/item[0],
> hoxide>                                str(x)+'/('+item[1]+')'
> hoxide>                               ),
> hoxide>       lambda x, item:   (x==0 and (0,'ZZZ')) or \
> hoxide>                         (item[0]/x,
> hoxide>                                '('+item[1]+')/'+str(x)
> hoxide>                               )
> hoxide> ]
> 
> hoxide> def con(num):
> hoxide>     l = len(num)
> hoxide>     p = list()
> hoxide>     if l==1: return {num[0]:str(num[0])}
> hoxide>     for i in range(l):
> hoxide>         for f in funs:
> hoxide>             p += map(lambda item: f(num[i],item),
> hoxide>                        con(num[:i]+num[i+1:]).items()
> hoxide>                     )
> hoxide>     return dict(p)
> 
> hoxide> print con(map(float,[1,5,6,7])).get(21.0,0)
> 
> 
> hoxide> 代码我就不解释了,有问题就问吧.
> 
> hoxide> 另外由于浮点计算的误差问题,".get(21.0,0"这句还不太完善,不过解决这个问题足够了,具体怎么完善大家都知道拉.
> 
> hoxide>         hoxide
> hoxide>         hoxide_dirac at yahoo.com.cn
> hoxide>           2004-08-12
> 
> 
> ********************************************/
> 
> --
> Free as in Freedom
> 
>  Zoom.Quiet                           
> 
> #=========================================#
> ]Time is unimportant, only life important![ 
> #=========================================#
> 
> sender is the Bat!2.12.00
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年08月13日 星期五 09:22

Jerry Marx zhiyuan.ma at enorbus.com.cn
Fri Aug 13 09:22:25 HKT 2004

Zoom.Quiet,您好!

	他说的应该是freebsd的ports吧.
	简单的make install就可以的了.

======= 2004-08-13 09:15:11 您在来信中写道:=======

>Hollo DIrk:
>
>  谢谢!提点,
>什么是 post 升级??
>手工逐一升级模块??
>
>看 UPDATE.html 的意思是直接安装新版本的,再定制设置,归入旧内容?
>
>你是从版本多少升级上来的?
>
>可以给一个 steps ??
>
>谢谢先!
>
>
>
>
>/******** [2004-08-13]09:12:05 ; DIrk wrote:
>
>DIrk> Zoom,
>
>
>DIrk> 先备份你定制的东西和配置文件,使用ports升级后恢复定制文件和配置文件。
>DIrk> 还有,一定要备份data目录。
>
>DIrk> 我的升级没有发生错误!
>
>DIrk> DIrk
>
>
>DIrk> ----- Original Message ----- 
>DIrk> From: "Zoom.Quiet" <zoomq at infopro.cn>
>DIrk> To: "DIrk" <mailing at wandy.cn>
>DIrk> Sent: Thursday, August 12, 2004 12:17 PM
>DIrk> Subject: Re[2]: [python-chinese] MoinMoin的中文翻译有点错误!
>
>
>>> Hollo DIrk:
>>> 
>>>   升级安全吗??
>>> 仅仅覆盖原来的目录,保留设置文件就好的??
>>> 
>>> 
>>> /******** [2004-08-12]12:16:22 ; DIrk wrote:
>>> 
>>> DIrk> 这个是 http://220.248.2.35 上的:
>>> 
>>> DIrk> if (state == 1) msg = "您在 EPres 的编辑锁定, 还剩下 # 分钟."
>>> 
>>> DIrk> 这个是我的站点上的:
>>> 
>>> DIrk> if (state == 1) msg = "您对'FreeBSD'的锁定将在#分钟内失效."
>>> 
>>> DIrk> 我们使用的文件是不同的,不知道你是否作了定制。
>>> 
>>> DIrk> (我已经将Moin升级到1.2.3)
>>> 
>>> DIrk> DIrk
>>> 
>>> 
>>> 
>>> 
>>> 
>>> DIrk> ----- Original Message ----- 
>>> DIrk> From: "Zoom.Quiet" <zoomq at infopro.cn>
>>> DIrk> To: "DIrk" <python-chinese at lists.python.cn>
>>> DIrk> Sent: Thursday, August 12, 2004 11:08 AM
>>> DIrk> Subject: Re: [python-chinese] MoinMoin的中文翻译有点错误!
>>> 
>>> 
>>> >> Hollo DIrk:
>>> >> 
>>> >>   谢谢!
>>> >> 可是,在 http://220.248.2.35:7080/moin 中是好的哪??
>>> >> 
>>> >> 
>>> >> /******** [2004-08-12]11:08:21 ; DIrk wrote:
>>> >> 
>>> >> DIrk> 在MoinMoin的UTF-8的中文翻译文件中存在一个错误:
>>> >> 
>>> >> DIrk> 大约在 59 ~ 60 行的样子:
>>> >> 
>>> >> DIrk> '''Your edit lock on %(lock_page)s has expired!''':
>>> >> DIrk> '''您对"%(lock_page)s"的编辑锁定已经超时!''',
>>> >> DIrk> '''Your edit lock on %(lock_page)s will expire in # minutes.''':
>>> >> DIrk> '''您对"%(lock_page)s"的锁定将在#分钟内失效.''',
>>> >> DIrk> '''Your edit lock on %(lock_page)s will expire in # seconds.''':
>>> >> DIrk> '''您对"%(lock_page)s"的锁定将在#秒内失效.''',
>>> >> 
>>> >> DIrk>
>>> >>
>>> 由于翻译者在字符串中使用了双引号",而这段文字是在MoinMoin编辑一个页面的时候才会使用,这样,双引号致使JavaScript错误,正常的情况下,当你编辑一个页面的时候,在浏览器状态条显示剩余时间(初始是10分钟)。
>>> >> 
>>> >> DIrk>
>>> 我已经修改如下:(或者可以修改PageEditor.py中的JavaScript)
>>> >> 
>>> >> DIrk> '''Your edit lock on %(lock_page)s has expired!''':
>>> >> DIrk> '''您对'%(lock_page)s'的编辑锁定已经超时!''',
>>> >> DIrk> '''Your edit lock on %(lock_page)s will expire in # minutes.''':
>>> >> DIrk> '''您对'%(lock_page)s'的锁定将在#分钟内失效.''',
>>> >> DIrk> '''Your edit lock on %(lock_page)s will expire in # seconds.''':
>>> >> DIrk> '''您对'%(lock_page)s'的锁定将在#秒内失效.''',
>>> >> 
>>> >> DIrk> 其他地方的双引号我还没有发现问题,暂时不动。
>>> >> 
>>> >> DIrk> DIrk
>>> >> 
>>> >> 
>>> >> ********************************************/
>>> >> 
>>> >> -- 
>>> >> Free as in Freedom
>>> >> 
>>> >>  Zoom.Quiet                           
>>> >> 
>>> >> #=========================================#
>>> >> ]Time is unimportant, only life important![
>>> >> #=========================================#
>>> >> 
>>> >> sender is the Bat!2.12.00
>>> >> 
>>> >> _______________________________________________
>>> >> python-chinese list
>>> >> python-chinese at lists.python.cn
>>> >> http://python.cn/mailman/listinfo/python-chinese
>>> >> 
>>> 
>>> 
>>> ********************************************/
>>> 
>>> -- 
>>> Free as in Freedom
>>> 
>>>  Zoom.Quiet                           
>>> 
>>> #=========================================#
>>> ]Time is unimportant, only life important![
>>> #=========================================#
>>> 
>>> sender is the Bat!2.12.00
>>> 
>>>
>
>
>********************************************/
>
>-- 
>Free as in Freedom
>
> Zoom.Quiet                           
>
>#=========================================#
>]Time is unimportant, only life important![
>#=========================================#
>
>sender is the Bat!2.12.00
>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese
>

= = = = = = = = = = = = = = = = = = = =
			

        致
礼!
 
				 
        Jerry Marx
        zhiyuan.ma at enorbus.com.cn
          2004-08-13


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2004年08月13日 星期五 09:55

Xie Yanbo idkey at 163.com
Fri Aug 13 09:55:55 HKT 2004

On 2004-08-13 09:13:1092359608 +0800, Alex Dong wrote:
> 上周在火车上无聊,就掏出纸和笔也在考虑这个算法,最后的结果是把这个问题变成:
> 
> 给定任何n个的数,如何使用四则运算获得m这个结果。
> 
> 我的大概思想是一个递归加不断规约的过程:
> 1.对于n个数,从中间任意取出2个数。
> 2.对这两个数进行计算,把结果存放回原来的数中,现在就有n-1个数。
> 反复循环1,2两步操作,直到最终只剩下2个数。
> 在递归的过程中需要记录两个东西:
> 现有的计算和组合顺序。
> 未进行的计算顺序,以便于下次穷举。
> 
> 最近很忙,有时间的时候会尝试把这个算法实现出来。

记得 chinaunix 上,有人写文章介绍一种通用算法时,就当场用 C++
实现了一个框架,并用它很轻松的写出了24点的计算程序。不过刚才
找了找,没找到,和 alex 的思路差不多;不过用该算法,他很容易
的添加了组合顺序的支持、以及实质上是相同算式的结果的过滤。用了
不少 STL 的东西。



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号