叫什么好呢?

有一个游戏,叫做TetraVex,她最近比较郁闷,因为她还没有一个好听的中文名呢。

她最近委托我给起个名字,但是我想了半天,实在是想象力有限,所以在这里求大家帮帮忙。TetraVex她说她最后会自己选一个名字,并且有神秘礼品送给起名的人,不错吧。更大的诱惑是,如果TetraVex采纳了这个名字,名字将随TetraVex悄然走入装有GNOME的中文操作系统中。

那么我就来介绍一下TetraVex。估计看几张图就明白了。

Tetravex

游戏进行中


Tetravex

Bingo!(注意这跟上图并不是同一盘游戏)


简单的说,九个块(对于3*3的尺寸)原先在右边,要都移到左边,并符合邻边相同的原则。

我自己也构思了几个名字,比如“方块拼图”、“拼四边”、“对边游戏”、“邻接数字”等等。但不用TetraVex表态,我都觉着不太好听。

VLC的复活节彩蛋

今天才看到的,VLC戴上了一个可爱的圣诞帽子。

VLC

VLC的三角锥上戴上了红帽子。

11年。

谢绝评论。

感动十一那些事儿

2007、2008、2009,今年是第三次感动十一网上投票。

回忆前年,我和王怀橘(桔?橙?)找到塔爷。塔爷说,十佳投票的程序改成感动十一吧,就改改颜色就行了。很天真地接下了这个任务,发现里面充斥着看不懂的ASP。于是图书馆借了一本书,竟然在一周之内连学带改把感动十一2007上线了。十佳蓝色的theme变成了Ubuntu的三种颜色,配起来只能说还不错。现在想起当年看到多少不知道啥意思的代码,摸索着竟然就能用了,神奇。

我还记起了猩那激情的暴力测试。

想起去年,咱准备充分。那时正在学习php中。于是我在感动十一开始一个月前准备把它port到php(把所有HCC程序port到php是用Linux作服务器的第一步:),我当年就有这个想法)。时间充分,可以慢慢来。但EMAP不干。EMAP改了时间,我再次像07年一样紧张。不过终究还是完成了。

猩又帮我暴力测试。

07、08年都是赶出的程序,今年才是真的不着急。看着猥琐的代码,心情实在是不好。话说十佳投票的程序就写的很糙(塔爷别跟我急,这是事实……),让一个初学者改成了感动十一。08年又极其暴力地把asp直接翻译成php,埋下了祸根。看着垃圾代码,没有什么心情把它改好。于是修了几个sql注入的漏洞,改改css(换了个配色),和王怀橘一块作了几个新图,完事了。

得出一个结论:第一遍写就要尽量写得完美。在NDSOJ我准备这样做,免得以后自己没有心情看自己写的东西。

最后,欢迎前去参观指导:http://www.shiyihcc.com/gandong/2009

NDSOJ一个月大了

这个项目,至少到现在还是很活跃的:),平均每天能commit差不多一次。这个在NOIP复赛前诞生的想法,现在已经有一点成熟的感觉了。体验到这里
这一个月来在11月14日的雏形的基础上新增了这些功能:

  • 用户登录(11月15日)
  • 题目浏览(11月15日)
  • 屏蔽IE(11月16日)
  • ……这周忍住了,没有commit。不要误了竞赛啊,那可得不偿失。
  • 题目搜索(11月24日)
  • 界面大调整,这才像个样子(11月29日)
  • 更换配色方案(11月29日)
  • favicon(12月8日) -> 只是暂时的,将来还要换一个……

顺便发布一下现在定下的时间表:

  • ~2010.1.END 可以提交程序。
  • ~2010.2.END 完成本地评测系统。
  • ~2010.3.END 完成评测系统(包括评测机与服务器的通信)。
  • ~2010.4.END 开始小规模测试
  • ~2010.5.END 筹备服务器及评测机、注册域名
  • ~2010.7.END 对外开放

关于评测系统,通过这几个星期对一些OJ的分析和看书,现在已经有些想法了。

另外,界面上,大家可以提提建议。想要达到的目标是:符合标准、简洁大气、清晰易用、无视IE。

用Paw++看NOIP2009

昨天了解到一个极其NB的软件叫做Paw++(全称是Physics Analysis Workstation,详见http://en.wikipedia.org/wiki/Physics_Analysis_Workstationhttp://wwwasd.web.cern.ch/wwwasd/paw/)。这是CERN从1986年开始开发的一个超强的统计、绘图软件。昨天在Ubuntu软件中心看到了它,还是GPL的,记得原来我爸也用过,于是将它安上试试。

需要找一些数据来做实验,于是选取了NOIP2009的得分情况(这个东西是高能物理用的,干这个有点大材小用:) )。Paw有一个自己的脚本语言,十分简单。记得处理数据的命令好像是NTUPLE,于是先

help nt

为什么不是help NTUPLE?因为paw很强的一点就是如果没有歧义,只要输入命令的前几个字母就OK了。
然后Paw弹出一个小窗口写出了NTUPLE的命令列表。

古老的Motif界面,就像ddd一样。。。

古老的Motif界面,就像ddd一样。。。

我们还是先获得数据吧。先上 http://www.student.gov.cn/bjnoi/tzgg/269720.shtml 把那个成绩表粘到 OpenOffice.org 电子表格 中,然后去掉表头、姓名一栏和变动原因一栏,编号一栏去掉“BJ-”,只保留编号数字。然后把这个ods导出成csv,命名为NOIP.csv放在家目录下面。

然后转到Paw,输入nt/cr 10 NOIP 6 ! ! id tmark son trade spy sudokunt/crNTUPLE/CREATE的简写,要是不太明白可以看看help nt/cr。接下来nt/read 10 NOIP.csv,程序返回223 events have been read,然后nt/scan 10,bingo!数据已经全部输进来了。接下来就是画图了。

开始画图。先nt/pl 10.tmark。得0分的确实不少啊!

总分的分布。

总分的分布。nt/pl 10.tmark

这时我们想看看总分和sudoku一题得分是否有很大相关,输入nt/pl 10.tmark%sudoku。Paw输出了一个散点图。我们再用hi/pl 1000000(1000000是系统分配的图的编号)详细看一下。顺便试一下hi/pl 1000000 boxhi/pl 1000000 legohi/pl 1000000 surf

散点图。

散点图。hi/pl 1000000


方块图,哪里人多一目了然。

方块图,哪里人多一目了然。hi/pl 1000000 box


立体的,哈哈。

立体的,哈哈。hi/pl 1000000 lego


还是立体的。

还是立体的。hi/pl 1000000 surf

通过这几幅图,我们可以看出,sudoku和tmark数独一题是得到高分的钥匙。

如果有兴趣,可以再看看tmark vs. spy,可以看出,spy得到90或100的人才有可能得高分。还可以再乱看看其他好玩的图形。

哈哈,玩完了,不错吧。Paw++就是这么个强悍的东西,今天主要是玩玩,可能连它1/100的功能都没有用上。追求更加强大功能的朋友可以看看同是欧核中心出的叫做ROOT的软件,也可以在Ubuntu的源里面找到。它是用来替代Paw的,功能更强,使用C/C++语法,我大概看了一下,使用起来比Paw稍微复杂一些。

最后说一声,这个东西似乎只有Linux版。

查找时的哨兵

今天偶然看到一个很巧的查找技巧,跟大家分享一下。

假设有一个数组a,要找到一个n使a[n]=key。

很简单吧,先看看一般的方法:

for(i = 1; i <= a.length; i++)
	if(a[i] == key)
		break;
// now a[i] = key, i > a.length means not found.

看看很巧的用哨兵的方法:

a[0] = key;
for(i = a.length; ; i--)
	if(a[i] == key)
		break;
// now a[i] = key, i = 0 means not found.

这样加上一个小小的哨兵(a[0])就节省了大约一半的时间!其实挺实用的。