从几个字母猜所能组成的英文单词游戏开始

来源:互联网 发布:js添加数组中指定元素 编辑:程序博客网 时间:2024/05/01 13:49
话说一个朋友突然问了我“s m a u r n能组成什么单词”,我试着拼了一会儿,没看出象什么单词,就老实地说“我不知道,不过如果给点时间,我写个小工具找一下”

于是,就开始构想,这个功能太简单了,找个英语单词表,把所有的组合列出来,再一个个比较就是了。

程序还算是容易编,唯一的一个地方就是所有单词的组合,我没想出什么好算法,就临时用了递归来产生所有组合。不过写完了程序,还是觉得应该有更好的办法,可惜大脑发木,google一下,发现了"The Art Of Computer Programming. Volume 4",正好是对组合问题的分析,当然,这只是个小游戏,不过先记下,等有空再好好研究一下。

程序写出来了,解决这个问题的最大关键在于找到一个合适的英语单词表。
从哪能找到比如多的免费的英语单词表呢?google吧。首先找到这里http://www.slate.com/id/2139611/#,不看不知道一看吓一跳,英语单词竟然有988,968,而且还在不断增加。那如何得到这些所有单词的词条呢? 没找到。我记得原来在哪本书上说过有个"English Words bank"之类的网站上面有,不过没找到这个地方,而是找到了stardict的词典下载网页:
http://stardict.sourceforge.net/Dictionaries_PowerWord.php
这里是比较多了。下了个“简明英汉词典”,再找到ConvStar(http://www.octopus-studio.com/beta/MdxBuilder.zip)转一下,再用PowerGREP处理一下就得到纯词条,这样就有了45万的词条。



这样这个小游戏的问题就解决了,答案是,不能。

当然,留下两个问题有待解决:
1、得到所有英语字母组合的算法
2、怎么能得到所有英语单词的列表

问题1有待研读Donald E. Knuth的著作(找了一下,电子版可以用emule下载:
ed2k://|file|The%20Art%20Of%20Computer%20Programming.%20Volume%204%20[Addison%20Wesley_2002-Donald%20E%20Knuth-200p].pdf.rar|2058854|836BD5DDEF340EA501ED133C442CAA62|h=72VEWYOZPF7JG35C5ZO3GCEMIOZKTPT3|/ )
问题2,有空时可以留意一下。

以上故事是若干天前的事了,今天想起来记在这里。同时,又找到一个英语单词词典下载的好地方:
http://xdxf.revdanica.com/down/index.php
还有WordNet的下载地:
http://wordnet.princeton.edu/obtain

没想到一个小游戏,收获也还颇多。 
原创粉丝点击