分类:'发芽网开发记录' 的所有文章

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

(注:这里说的是一般的理解,也就是曹操逃出为胜)

前些天求解了所有开局,直到几天前,才编好程序求解这些开局
最难的开局就是我最初预测的那个:峰回路转,最短需要138步才能让曹操逃出

峰回路转有三个变种(有人说有六个,那是左右镜像,不算在内的):
峰回路转1 峰回路转2 峰回路转3

有了孩子以后,租房2600,日常开销猛增到接近五千,加一块超出七千了,日,开始记账,记账,节流
这几天一直忙着工作的事,没办法,得糊口啊
到今天才发表此文,过两天有空再选几十个有意思的开局放在智取华容道

对了,在线自动求解除了“曹出”以外,我添加了镜像(水平、垂直、中心)的求解,喜欢的自己去试试吧
(这几种是外国的玩法,黄志华先生提到过,代码改动不大,就给加上了)

华容道有多少种开局?最难的华容道开局是哪个?(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中插入符号功能去找吧。

« 上一页下一页 »