六月, 2008 的文章

好吧,成功了,现在只有华南虎

华南虎成功的转移了公众的视线

这是网易新闻2008年06月29日的新闻评论top10。
七条关于华南虎,我很高兴,我的孩子活在一个黑白不是那么颠倒的国度。

同时,也很失落。
好吧,我承认,有人成功了,
在大家都密切关注四川地震中,
学校房子质量问题的时候,
抛出这个来,
一下子,
问题好像就不存在了,
只有周正龙有问题,
华夏大地依旧歌舞升平。

华南虎忍不住要说话了:
下一次,
你就是替罪羊!

代码发芽网增加了两个RSS,关于全站代码和评论的

参照: http://www.djangoproject.com/documentation/syndication_feeds/
写了个超级简单的RSS

现在在代码发芽网首页(http://www.fayaa.com/code/)在右上角就可以看到
为了减轻服务器压力,到feedsky做了烧录,两个地址如下:
全站代码RSS:http://feed.feedsky.com/fayaacode
全站评论RSS:http://feed.feedsky.com/fayaacomments

Django做RSS真简便,赞一个。
实现这个功能的部分代码在这里:http://www.fayaa.com/code/view/149/

代码发芽网更新了:界面调整、多种字体 - 无需插件支持blog代码高亮

代码发芽网:无需插件支持blog代码高亮, http://www.fayaa.com/code/
已知支持:百度空间, 网易邮箱、网易博客, 新浪博客, 牛博网, CSDN, 基于Wordpress的Blog, Google Gmail
网站架构:Django + Pygments,架在shared host上面(bluehost的主机)

感谢各位在反馈页面以及python-cn邮件组给出的建议,这段时间都在更新,纯兴趣的东西,时间不够啊…
最近主要更新如下
1. 界面进行了更多的调整,让字体配色显得更加舒服,把表情图片改小了一些,看起来更加协调
2. 加入了方便复制代码的按钮
3. 加入了”给用户发信”功能
4. 发自己用的临时贴不需要填标题了
5. 可以选择字体了,会枚举这些字体(机器上没有则不显示):’Consolas’, ‘Lucida Console’, ‘Courier New’, ‘Bitstream Vera Sans Mono’, ‘monospace’, ‘Fixedsys’, ‘Monaco’
(目前复制粘贴以后字体还在,但是发blog / email以后字体消失,还没有搞清楚是哪里的问题…)

可以打开这个例子看看效果:猜数字游戏的八步以内求解程序

猜数字游戏,计算机求解,八步以内求解决策树

猜数字游戏

这个游戏的规则比较简单,一般两个人玩,一方出数字,一方猜。出数字的人要想好一个没有重复数字的4位数,不能让猜得人知道。猜的人就可以开始猜。每猜一个数字,出数者就要根据这个数字给出几A几B,其中A前面的数字表示位置正确的数的个数,而B前的数字表示数字正确而位置不对的数的个数。

如正确答案为5234,而猜的人猜5346,则是1A2B,其中有一个5的位置对了,记为1A,而3和4这两个数字对了,而位置没对,因此记为2B,合起来就是1A2B。

接着猜的人再根据出题者的几A几B继续猜,直到猜中为止。

次数限制
有的时候,这个游戏有猜测次数上的限制。根据计算机测算,这个游戏,如果以最严谨的计算,任何数字可以在7次之内猜出。而有些地方把次数限制为6次或更少,则会导致有些数可能猜不出来。而有些地方考虑到人的逻辑思维难以达到计算机的那么严谨,故设置为8次甚至10次。也有的没有次数上的限制。

前几天,突然想起来,研究生时候研究的猜数字程序求解问题,当时想做出一个完全决策树,根据这个树,任何数字都可以在8次以内求解。

解题思路很简单:

#1. 生成所有的四位不重复的0-9的数字组合的集合
#2. 随便找四个数字,比如0123
#3. 根据用户返回结果(xAyB),砍掉集合里面不符合结果的
#4. 根据现有数字组合,猜下一个,主要技术含量在这里:
#  a. 贪心算法,每次都找当前步骤里最优的
#  b. “最优”的定义:
#   b1. 选择一个组合
#   b2. 把这个组合和剩下的组合进行匹配,统计xAyB出现的次数,
#   __比如0A0B出现了10次,1A3B出现了0次等等
#   b3. 如果xAyB的所有可能出现的机会最为均等,那么这个选择的“区分度”就很大
#   __这个可以通过信息量理论进行衡量,也可以简化为通过“最小标准差”来衡量
#   b4. 遍历所有组合,找出“区分度”最大的
#5. 重复步骤3, 4,直到用户给出4A0B或者集合里面只剩下一个元素

首先在python-cn上面发起了关于如何快速生成所有数字组合的讨论
抛砖引玉,讨论的结果中居然有十多种方法,体现了不同的思路,具体的讨论参见:
函数性能:列出四个不重复数字(0-9)的所有组合

相关代码在这里:
生成四位不重复数字(0-9)的所有组合,比如8765, 9876, 0123
生成四位不重复数字(0-9)的所有组合

后来实现了上面所得解题思路,代码在这里:猜数字游戏的八步以内求解程序.

为了验证一定能在八步以内求解,我决定做个决策树生成程序,这个决策树的节点代表着每次猜测,树枝代表着xAyB这样的选择。
猜数字游戏8步以内的完全求解决策树生成程序

我实验过将这个决策树直接用于计算机求解,速度没的说,基本上就是8个以内的dict元素get操作和比较操作就能搞定。

参见:代码发芽网上所有标签(Tag) 为 猜数字 的文章

Bluehost上架设Django之Admin

Bluehost上面架设Django的过程见这篇文章:Bluehost Django fastcgi配置, 静态(static)文件处理

架好以后,最近做代码发芽网才发现Admin界面是裸的 - 没有css。

分析了一下,应该是Admin_media之类的没有设置好。Google了一下Dreamhost Django Admin(为什么不是Bluehost而是Dreamhost?因为他们很相似,但是Dreamhost的wiki明显优于Bluehost的论坛),找到这一篇:
http://wiki.dreamhost.com/index.php/Django
里面说,做一下ln -s就行了
我的是这样设置的(根据你自己的Django media文件夹位置进行调整):

settings.py:
MEDIA_ROOT = '/home/twomaom1/django/django-trunk/django/contrib/admin/media'
ADMIN_MEDIA_PREFIX = '/admin_media/'

然后到命令行下:

ln -s /home/twomaom1/django/django-trunk/django/contrib/admin/media /home/twomaom1/public_html/fayaa/admin_media

搞定!

顺便改了所有的model,加上Admin,美化了一下下,Django的Admin就是好用啊。

下一页 »