十月, 2008 的文章

华容道有多少种开局?最难的华容道开局是哪个?(1)

华容道游戏存在很久了,但是,有两个问题还没有答案:
1. 华容道游戏到底有多少可以求解的开局?
2. 最难解的华容道开局又是哪个(或者,哪些个)?

智取华容道的在线游戏上线两个月了,现在已经有了95个关卡,三千两百七十多个过关记录。

当初做这个游戏,实际上经过一番挣扎,到底要不要做,看到网上贴的很多秘籍,转来贴去,很多都看不懂,还有很多都并非最佳解法,还是忍不住做了这么一个在线游戏,收集已知的名局。
随着自动解题程序的上线,我对华容道的兴趣开始转移。在我的列表里面,想做的事情已经排到了我40岁以后,还要努力养家糊口,所以注定有一些感兴趣的事情做不完。

但是这次选择华容道来做,确实学到了不少东西,所以在兴趣还没有完全缺失以前,还是想再多走一步。

前面提到的那两个问题,用程序求解应该不困难,为什么到现在还没有答案呢?

非不可为,实不为也。

那么,就让我来搞定这个问题吧!半瓶墨水也要写出大千世界 :D

讨论参见:http://groups.google.com/group/pongba/browse_thread/thread/a49ec9fd9541e28f

现在进展
1. 已找出所有可能的局:684个,代码参见 http://www.fayaa.com/code/view/453/
2. 由终局已经推出华容道所有可求解的开局数量,含镜像263977种,不含镜像132156种
代码参见:http://www.fayaa.com/code/view/457/

所以第一个问题已经搞定了,关于第二个问题,代码已经完成大半了
估计这个周末就能搞定,请静待最难开局的出现吧!

附:已知的最难开局是峰回路转最快需要138步,很可能就是它了。

Update@2008/11/01,22:44PM:
最新数据表明:“峰回路转”开局已是最难开局,过几天搞一些有意思的分析结果出来看看。

代码发芽网的自动缩进功能

代码发芽网做好以后,很多人都提出贴代码的地方没有自动缩进
一直都没有改,因为我觉得这里是贴代码的地方,不是写代码的地方
最近研究jQuery,写了一个HTML测试页: http://www.fayaa.com/tool/try/
为了使用上的方便,觉得确实使用代码缩进会比较方便

现在发芽网的所有textarea都有自动缩进了,包括反馈页面
考虑到其他地方对Tab键的焦点切换用途,目前发芽网只在HTML测试页(fayaa.com/tool/try/)截获了Tab按键,其他的textarea框不进行此配置

下面的代码就是为了实现这个功能,原理很简单,采用上一行的缩进就行
只要在html中插入脚本调用set_tab_indent_for_textareas()函数就可以了
注1:需要jQuery支持,如果不喜欢jQuery改成裸javascript也很方便的
BTW:浏览器的兼容性问题(firefox和IE)真他妈的烦!

代码太长了,给个链接吧: http://www.fayaa.com/code/view/442/

封装了Django的send_mail函数,方便在localhost进行邮件相关的测试

最近在为发芽网添加一些邮件通知功能
由于本地没有邮件服务器,在发邮件的那段代码就会产生异常
虽然在发生异常时仍可以通过Debug=True来看本地变量的值,但是这样毕竟很不爽

很多天以前在Python-cn讨论组问过这个问题,其中Leo Jay和Zoom Quiet的回答很不错,提出根据server的地址或者端口来判断,本地一般不是80端口,而且一般是127.0.0.1,所以比较好判断

这样就可以封一个mock,本地自动采用print打出来,Server端则可以正常收发Email

最近工作太忙,直到今日才有时间实现,代码如下:

Python语言: 封装Django的send_mail函数,方便在本地(没有邮件服务器)进行邮件相关的测试
def my_send_mail(request, subject, body, sender, recv_list, reply_to=None):
    ""”send_mail wrapper: write to command line if it's called on localhost
    ""”
    local = "127.0.0.1"
    if request.META['HTTP_HOST'][:len(local)] == local:
        print "Subject:", subject
        print "From:", sender
        print "To:", recv_list
        if reply_to:
            print "Reply-To:", reply_to
        print "Body:\n", body
    else:
        if reply_to:
            email = EmailMessage(
                        subject,
                        body,
                        sender,
                        recv_list,
                        [],
                        headers = {'Reply-To': reply_to})
            email.send()
        else:
            send_mail(subject, body, sender, recv_list)

搞不懂一个问题:如果银行倒闭了

如果工商银行倒闭了
那么存在工商银行里的钱还能拿到吗?

———————————–
另外,转帖一则网友关于最近的土地政策的寓言:

不知深浅的河上有座桥,美美在桥上走,突然看到有人在河里摸什么
于是问,你在摸什么啊,那人道:我在摸石头。继续问:摸石头干吗啊?
“过河呗”
“这不是有桥吗”
“那不符合我的国情”
美美回去把那人查了下,才发现那人叫中中,住东方,有严重的神经病

有趣的Dings字体家族

做设计的时候,不免会用到一些小小的图示。
比如前面做在线华容道游戏的时候,有一个很重要的功能就是“过关记录动态回放”:
(可以点过去看看横刀立马开局的最快求解方法)
hrd_replay.gif

上面的一排播放控制按钮让人一目了然,为播放页面增色不少
这个是用什么做的呢?
一般情况下,我会去搜索引擎搜索素材,或者从播放器上面抓图抓下来。
但是这次不同,这里使用的是Webdings字体,那几个播放按钮,依次是字符(不包含引号)”94;78:

不信?呵呵,要验证很简单:
打开word或者任意的其他编辑器,输入这几个字符,然后把它们的字体改成Webdings看看
(字体放大一下效果更佳)

至于上面图中的一些立体效果,只需要在PS的时候四五下点击即可做到。
很爽很便捷
最爽的是,这都是矢量字体,放大缩小并不影响品质。

展示一些有意思的Wingdings, Wingdings 3以及Webdings符号如下:
dings_font.png

这只是十分之一都不到的内容,想要看到更多,到word中插入符号功能去找吧。

下一页 »