分类:'编程随笔' 的所有文章

代码发芽网更新了:界面调整、多种字体 - 无需插件支持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) 为 猜数字 的文章

在Pygments.org上加了代码发芽网的链接

早晨起来给Pygments的作者Brandl写了一封感谢信,晚上回来收到他的回信说:Sounds great! I’ve added the site to the “Who uses Pygments” page

现在访问http://pygments.org/projects/ 可以看到一个发芽网的链接: Fayaa, a Chinese pastebin

Pygments是个非常漂亮的工具,感谢Brandl的付出与共享。

顺便到百度百科、csdn、coolcode.cn、以及javaeye.com上面去做了一下“广告”:主要是介绍这个工具。
唉,人家Javaeye的网站,那叫一个快啊!

BTW:
在Javaeye做完“广告”不到两个小时,我的Javaeye帐号就被默默的删除了,那叫一个快啊!
发的两篇贴也踪影皆无,效率真tm高,过程真tm和谐
看来即便做广告一定不能说明自己是做广告,要这么说:我发现一个在线加色工具,效果还不错,云云,
但是,这他妈的就是我自己的工具,我觉得好用,推荐一下,有什么不可以?
毛遂自荐即便不算什么美德,也犯不着封杀吧?

骂归骂,我比Javaeye的素质高多了,随便你用,爱怎么的怎么的
干!

代码发芽网(Beta版,在线代码语法高亮)发布,欢迎测试、试用

在线代码语法高亮,支持多个主题,可直接复制粘贴高亮代码到各个网站、blog主流编辑器
已知的支持列表(不完全):
百度空间
csdn发帖
wordpress默认编辑器以及其主流编辑器
微软Office、Outlook
Google Gmail以及Google文档
163邮箱
等等等等,还有许多没有写在这里的

发芽网主页:http://www.fayaa.com/,目前只有“代码发芽网”一个子站点,将会发布更多
代码发芽网主页:http://www.fayaa.com/code/

基于python + Django + pygments,断断续续写了快要半年了,终于可以发布beta版了。



代码发芽网:
聚沙成塔,水滴石穿,积少成多,绳锯木断

您是否曾经有过这些经历
o 发现了很好的代码,保存后再也找不到?用邮件发一段代码,被抱怨说格式很乱?
o 发代码段给朋友时,没有彩色语法高亮?或者,复制粘贴以后却依然是白底黑字?

该站特色:

代码的版本管理与更新记录, 近百种编程语言的语法高亮, 看代码简单高效
动态切换语法高亮主题配色, 加色后的代码可以复制粘贴, 粘贴后依然高亮

点击此处进入代码发芽网

简单的使用实例:
打开这篇文章: http://www.fayaa.com/code/view/20/
然后选择代码,复制,在blog后台粘贴如下(行号可以在复制前去掉)

Python语言: Python - 人性化的时间(比如:两分钟以前)
#人性化的时间:2008-01-27 08:37:29
#发芽网使用此函数来显示人性化的时间:比如1分钟以前,三天前,等等
def time_span(ts):
   delta = datetime.now() - ts
   if delta.days >= 365:
       return '%d年前' % (delta.days / 365)
   elif delta.days >= 30:
       return '%d个月前' % (delta.days / 30)
   elif delta.days > 0:
       return '%d天前' % delta.days
   elif delta.seconds < 60:
       return "%d秒前" % delta.seconds
   elif delta.seconds < 60 * 60:
       return "%d分钟前" % (delta.seconds / 60)
   else:
       return "%d小时前" % (delta.seconds / 60 / 60)

2008-05-25更新:
修正了代码行数过长引起行号混乱的bug
隐藏了Feedback页面的IP地址的最后一位
缩小了代码的字体
搞定了用户页面最后一页时的异常

2008-05-27更新:
修正了用户注册时用户名重复的问题

2008-05-28更新:
调整了配色方案和代码发芽网首页
修正了一个站内搜索的问题
新增了支持复制粘贴到Discuz!论坛的功能。

2008-05-30更新:
调整了行号切换方案,参见:代码发芽网显示代码时做行号切换的javascript脚本
完善了用户信息编辑
对界面颜色进行了一些微调
添加了给作者发信的功能(附加验证码)

2008-06-25更新:
这段时间其实都有更新,主要内容如下:
1. 评论里面的代码缩进没问题了
2. 界面进行了更多的调整,让字体配色显得更加舒服
3. 支持受限制的Discuz论坛发帖了,虽然有限,但有总比没有好
4. 加入了直接复制代码的按钮
5. 用户可以编辑自己的用户信息了
6. 切换行号以后复制粘贴不会再把行号包括进来
7. 加入了“给用户发信”功能
8. 把表情图片改小了一些,看起来更加协调
9. 发临时贴不需要填标题了

两个HTML小问题与解决办法

1. Pygements贴出来的东西如果有中文的时候,行号显示混乱。
问题:在有的字体下中文比英文高一块,每行多一点,最终差好多。
解决:style="line-height:130%"

2. html checkbox只有鼠标点中复选框才有效,点中旁边的label无效
解决:

<input type="checkbox" id="mycheckbox" name="mycheckbox" value="true" />
<label for="mycheckbox">点我也有效</label>

« 上一页下一页 »