Big Fish
Friday, June 19, 2009
Braid通关
Braid是一个平台解谜游戏。有XO版(Xbox Live Arcade)、PC版和Mac版。
这个游戏一上来是教你怎么玩的教学关,你可以左右走、跳、跳起来踩敌人头把敌人踩死。。。看起来是不是很像超级玛丽?不是,你还能回退(rewind)时间!比如你跳早了没踩到怪结果被怪摸死了,这个时候回退一下重新跳就好了。
OK我只是随便举了个例子,这个游戏的重点可不是奥特曼打小怪兽,而是拿到分布在世界各地的拼图碎片。而要取得这些碎片,很多时候你必须使用回退时间等技能。除了回退时间外,你还有些别的跟时间相关的特殊技能,具体的可以看官方宣传视频:
全游戏一共有60个拼图碎片,这60个碎片的取得方法包含了各种变态,设计得十分精巧,而且“绝无重复”(出自官方宣传语)。这些迷题的设计,使得我不得不说这是个神作。
这个游戏据说还能收集八个隐藏星星开启隐藏结局。可以哪天有时间玩一把。不过这八个星星实在是比那60个拼图还要变态一百倍。比如这第一个星星(原文链接,credit to CraigG):
World 2-2
This one... requires... a lot... of... patience... and... waiting...![]()
Seriously. Anyway... go to the right and you'll notice what looks like a
stationary cloud. Believe it or not, it's actually moving to the left VERY
slowly. It takes a good 2 hours for it to complete its journey to the left.
You'll actually want to jump on it at about 1 1/2 hours into its journey. It
should be just above the first door next to the cannon. This is where you want
to park Tim, waiting for the cloud. You can't do anything to speed up the time,
so I suggest you have a controller that doesn't turn off automatically for this
to work (otherwise, the game will keep pausing when your controller goes off).
At any rate... once you're on that cloud you've still got about 30 minutes left
to wait. After it finally reaches the left-hand side, you can jump up and onto
a ledge just above you and to your left. Notice that a new part of the level
is revealed. You can now nab that star you waited so long for. Congrats!
简单的说,就是要傻等2个小时。。。可以考虑设个闹钟然后去干别的,比如看个片啥的。
tags: entertainment, game, braid
Tuesday, June 09, 2009
今天的月亮不错
Monday, June 08, 2009
Lego Darth Vader!
拼Lego真的很有乐趣,所以我拼好大宗主送我的那套后,又去淘宝上买了一套回来。这次是。。。Darth Vader!
这个是ep4里面Luke他们去炸Death Star的时候,Darth Vader开出来拦他们的TIE Fighter。Darth Vader + TIE Fighter啊,多么激动人心的组合,下次再买个Luke Skywalker + X-Wing就完美了,不过家里已经没地方放了。。。
说明书上的lego列表,比上一个少了很多。另外不知道是中国版的原因还是后来改版的原因,我觉得这个说明书比上一个简单了不少,都不说每一块需要哪些lego了:
摘下头盔的Darth Vader同学,拿着他的红色lightsaber:
因为有经验,这次一上来就分类,于是一个半小时就拼好了:
打开舱门,Darth Vader同学坐在里面(红色lightsaber藏在TIE下面):
下来摆个pose:
照片还是在flickr上。
btw, 顺路推荐一下Fanboys,里面有Carrie Fisher(ep. 4, 5, 6里面扮演Princess Leia)和William Shatner(Star Trek里面扮演Captain Kirk)的客串!
tags: entertainment, toy, lego, star, wars, darth, vader, tie, fighter, 8017
Friday, June 05, 2009
概率问题(续)
昨天说的那个概率问题其实叫Monty Hall problem。昨天给的那个结果其实依赖于一个前提,就是主持人故意选择打开了有山羊的一个门。如果主持人只是随机/偶然/不小心打开了有山羊的一个门,这个问题叫做Monty Fall problem。在这种情况下,程序模拟的结果是这样的:
fishy@localhost:~/work/test$ ./test 100000
CHANGE
*** right on 22096 out of 44359, 49.81% ***
NO CHANGE
*** right on 22198 out of 44412, 49.98% ***
fishy@localhost:~/work/test$ ./test 1000000
CHANGE
*** right on 222412 out of 444576, 50.03% ***
NO CHANGE
*** right on 221543 out of 444252, 49.87% ***
fishy@localhost:~/work/test$ ./test 10000000
CHANGE
*** right on 2219600 out of 4441565, 49.97% ***
NO CHANGE
*** right on 2222900 out of 4446490, 49.99% ***
这种情况的结果是换不换都是1/2。
程序如下:
1 #include <stdio.h>
2 #include <time.h>
3 #include <stdlib.h>
4
5 typedef int changefunc(int, int);
6
7 int change(int guess, int show) {
8 return 0+1+2 - guess - show;
9 }
10
11 int nochange(int guess, int show) {
12 return guess;
13 }
14
15 void loop(int times, changefunc func, int print) {
16 int i, n, t;
17 n = 0;
18 t = 0;
19 for(i=0;i<times;i++) {
20 int target = rand() % 3;
21 int guess = rand() % 3;
22 int show = rand() % 3;
23 int finalguess;
24 if(show == target)
25 continue;
26 if(show == guess)
27 continue;
28 t++;
29 finalguess = func(guess, show);
30 if(print)
31 printf("guess %d, show %d, changed to %d, result is %d\n", guess, show, finalguess, target);
32 if(target == finalguess) n++;
33 }
34 printf(" *** right on %d out of %d, %.2f%% ***\n", n, t, ((double)n)/t*100);
35 }
36
37 int main(int argc, char **argv) {
38 if(argc <= 1)
39 return -1;
40 int times = atoi(argv[1]);
41 int print = (argc >= 3);
42 srand(time(0));
43 // change
44 printf("CHANGE\n");
45 loop(times, change, print);
46 // no change
47 printf("NO CHANGE\n");
48 loop(times, nochange, print);
49 return 0;
50 }
为什么两种情况下会不一样呢?原因是两种情况下,主持人开门的概率是不一样的。这里有个详细的证明。
不过在这两种情况下,换的结果都不会差于不换的结果,所以总之还是应该换。
tags: program, science, math, probability, monty, hall
Friday, June 05, 2009
休假装艺术青年
国家大剧院最近搞了个歌剧节,选的几个歌剧看着都很诱人。最后我在蝴蝶夫人和弄臣中选了前者,这个主要是因为我在上歌剧赏析课时看过帕瓦罗蒂版的弄臣的video,而蝴蝶夫人我还没听过。于是上国家大剧院官网订了张今天的票。考虑到本周要连续工作6天,于是我今天请了一天假,计划先去看中国美术馆的透纳画展然后去听歌剧,多么完美的艺术的一天啊。
但是事情就没有一帆风顺的。我中午12点起床后先去剃了个头,以避免形象太艺术青年在离帝堵中心那么近的地方引发不必要的关注和麻烦,然后回家洗了个澡、吃了个饭,还无聊的写了个程序。我差点都想写程序的相关blog了,不过还是忍住了决定活着回来后再写。虽然没写blog,但我还是3点钟才出门。
然后一路13号线10号线5号线的倒,到美术馆的时候已经16:05左右,然后我惊讶的发现售票处关门了!门口一个跟我同样吃了闭门羹的mm告诉我说4点停止售票。考虑到今天的特殊情况,我还特意去找保安确认了一下不是今天特殊而是每天都这样4点停止售票5点闭馆。没办法,只能周末再来了。
计划被打乱的结果就是我只能上街游荡了,歌剧19:30才开始呢。于是我开始往南走,结果居然下雨了。真是应了那句“每年的这两天北京都会下点雨”的说法啊。我走到王府井步行街北边的居然有一阵狂风暴雨,真的是上天也被感动了么。。。
在王府井新东安的厕所避了个雨,顺便试图找人出来陪我吃饭,未果。出来后雨也停了,还在步行街上看到有个人滑滑板。想了想貌似也不太饿,离19:30还有好几个小时,于是也懒得坐地铁了,沿着长安街开始往大剧院走。一路上发现天朝政府真体贴啊,沿路每走几布就能看到一对警察,或者一辆警车,或者一对城管,或者一辆城管车。在这样优秀的治安下,我再也不怕包被人掏了,于是放心的把包背在身后。回想起当年在南京新街口被小偷掏包的情景,不禁感慨还是首都好啊!
路过伟大的广场的时候,还看到了好多大叔拿着伞游荡。回想起刚才狂风暴雨的时候路边一个小店的人跟我叫卖10块钱一把伞,看来人民群众的生活真的富裕了也。
最后很无聊的绕到西单去吃了个饭,回到大剧院,19:00整,存包进场。
由于上次在歌剧厅看演出买的是二楼楼座基本正中的位置,考虑到其他位置看起来还没这个好,于是这次很抽风的买了一楼楼座正中的位置,也就是最贵的一档票。不过进去坐下后发现这个位置也还是有点远的,也许池座正中靠前的位置会更好一点。那个位置的票价稍微便宜一点,是第二贵的。
演出前我后面那排还坐下了个10岁左右的小萝莉,让我不禁感慨国家大剧院还是一如既往的不靠谱。连北大讲堂都知道这种演出1米2以下谢绝入场的。不过这次还比较好的一点是,整个演出期间那个小萝莉没发出过什么噪音。
另外一个一如既往就是国家大剧院歌剧厅的音响效果还是一如既往的烂。女高音(张立萍)在唱最高的几个音的时候,无一例外的被乐队的声音盖过而彻底听不清在唱什么(因为这种时候一般因为情绪原因乐队配乐也是华彩重音)。虽然我以前没听她唱过不知道是不是她自身的原因,但是考虑到男女高音的嗓门一般都小不了(戴玉强曾号称男高音应该不用麦克也能让全场都听到的),所以我相信还是混音和音响效果烂的可能性更大一点。
这个剧的配乐不错,比如前奏啥的都很不错。但是感觉咏叹调太少宣叙调太多(也能是因为音响效果太烂导致一些咏叹调听着像宣叙调),所以听着也不是太爽。
所以还是等María Pagés大妈下次来跳Flamenco的时候再去国家大剧院的歌剧厅吧。这实在不是个看歌剧的好地方。
另外等待开场的时候填了个调查问卷(不知道会不会从此收到无数垃圾短信),换了一套国家大剧院的书签回来。让我想起曾经看到一篇文章介绍装逼方法的,其中一个方法就是在家里摆个大部头书里面夹两张歌剧票到书签。我现在有书签了,不过还没大部头书。。。
tags: entertainment, opera, madame, butterfly, show, square, umbrella
Friday, June 05, 2009
概率问题
有个经典概率问题是这样的:三个门,其中一个后面是轿车,另外两个后面是山羊,你任选一个门,如果打开了后面是汽车,汽车就归你。你选了一个门后,主持人打开了另一个门,后面是山羊。这时他给你一个机会更改自己的选择,你要坚持自己一开始的选择还是更改自己的选择?这个问题很有名,比如电影21里面也提到过(btw, 这个电影很一般,没看过的就不用浪费时间了)。
答案是更改选择。因为不改的话你选对的概率是1/3,而改了你选对的概率变成2/3。
昨天杨爷不知道为啥又把这个问题翻出来了,然后跟我们讨论为啥不是1/2。我概率学的不够好,没找到足够让人信服的理由反驳他的1/2。不过我C语言学的比较好,而且正好今天休假比较闲,于是中午写了个程序模拟了一下。。。这个是跑很多次的结果:
fishy@Makelele:~/work/test$ ./test 100000
CHANGE
*** right on 66706 out of 100000, 66.71% ***
NO CHANGE
*** right on 33331 out of 100000, 33.33% ***
fishy@Makelele:~/work/test$ ./test 1000000
CHANGE
*** right on 667107 out of 1000000, 66.71% ***
NO CHANGE
*** right on 332750 out of 1000000, 33.28% ***
fishy@Makelele:~/work/test$ ./test 10000000
CHANGE
*** right on 6666707 out of 10000000, 66.67% ***
NO CHANGE
*** right on 3334351 out of 10000000, 33.34% ***
这个是只跑了20次但是给出具体内容的结果:
fishy@Makelele:~/work/test$ ./test 20 a
CHANGE
guess 1, show 0, changed to 2, result is 2
guess 0, show 1, changed to 2, result is 2
guess 1, show 2, changed to 0, result is 0
guess 0, show 1, changed to 2, result is 2
guess 0, show 2, changed to 1, result is 0
guess 1, show 2, changed to 0, result is 0
guess 2, show 0, changed to 1, result is 1
guess 0, show 1, changed to 2, result is 0
guess 2, show 0, changed to 1, result is 2
guess 0, show 2, changed to 1, result is 1
guess 0, show 2, changed to 1, result is 1
guess 0, show 2, changed to 1, result is 0
guess 0, show 2, changed to 1, result is 0
guess 1, show 0, changed to 2, result is 2
guess 0, show 2, changed to 1, result is 1
guess 0, show 1, changed to 2, result is 2
guess 2, show 1, changed to 0, result is 0
guess 2, show 1, changed to 0, result is 0
guess 1, show 0, changed to 2, result is 2
guess 0, show 2, changed to 1, result is 1
*** right on 15 out of 20, 75.00% ***
NO CHANGE
guess 2, show 1, changed to 2, result is 0
guess 1, show 2, changed to 1, result is 0
guess 1, show 0, changed to 1, result is 1
guess 1, show 2, changed to 1, result is 0
guess 0, show 2, changed to 0, result is 1
guess 2, show 0, changed to 2, result is 1
guess 1, show 0, changed to 1, result is 1
guess 0, show 2, changed to 0, result is 0
guess 1, show 2, changed to 1, result is 1
guess 0, show 1, changed to 0, result is 2
guess 1, show 2, changed to 1, result is 0
guess 0, show 1, changed to 0, result is 0
guess 1, show 2, changed to 1, result is 0
guess 0, show 1, changed to 0, result is 2
guess 0, show 1, changed to 0, result is 2
guess 1, show 0, changed to 1, result is 2
guess 0, show 1, changed to 0, result is 0
guess 1, show 0, changed to 1, result is 1
guess 0, show 2, changed to 0, result is 1
guess 0, show 2, changed to 0, result is 1
*** right on 7 out of 20, 35.00% ***
所以很显然了,换了猜对的概率是2/3,不换是1/3。
下面是程序
1 #include <stdio.h>
2 #include <time.h>
3 #include <stdlib.h>
4
5 typedef int changefunc(int, int);
6
7 int change(int guess, int show) {
8 return 0+1+2 - guess - show;
9 }
10
11 int nochange(int guess, int show) {
12 return guess;
13 }
14
15 void loop(int times, changefunc func, int print) {
16 int i, n;
17 n = 0;
18 for(i=0;i<times;i++) {
19 int target = rand() % 3;
20 int guess = rand() % 3;
21 int show, finalguess;
22 if(guess != target)
23 show = 0+1+2 - target - guess;
24 else {
25 show = guess + rand() % 2 + 1;
26 if(show >= 3) show -= 3;
27 }
28 finalguess = func(guess, show);
29 if(print)
30 printf("guess %d, show %d, changed to %d, result is %d\n", guess, show, finalguess, target);
31 if(target == finalguess) n++;
32 }
33 printf(" *** right on %d out of %d, %.2f%% ***\n", n, times, ((double)n)/times*100);
34 }
35
36 int main(int argc, char **argv) {
37 if(argc <= 1)
38 return -1;
39 int times = atoi(argv[1]);
40 int print = (argc >= 3);
41 srand(time(0));
42 // change
43 printf("CHANGE\n");
44 loop(times, change, print);
45 // no change
46 printf("NO CHANGE\n");
47 loop(times, nochange, print);
48 return 0;
49 }
要是能天天都休假还有工资拿就好了。。。
tags: program, science, math, probability
Saturday, May 30, 2009
Lego Star Wars!
伟大的不是一个人在战斗的大宗主,上上次回国的时候从遥远的南半球扛回来了一套Star Wars系列的Lego作为礼物,是ep2中Obi-Wan Kenobi去Kamino和Geonosis两个星球追查事情真相时使用的单人Jedi Starfighter,而且也有Obi-Wan的R4-P17,和电影中为了让单人飞船能进行超光速跳跃而加的Hyperdrive Booster Ring,当然还有Obi-Wan Kenobi,和另一个打酱油的Jedi Kit Fisto。
考虑到搬家的各种麻烦,大宗主送我后我一直憋着没拆。现在搬完家折腾完了,昨晚终于花了一个通宵4个小时(从1:20到5:10)给拼好了。下面是照片。
这个是盒子:
然后是开盒后说明书里面的零件列表:
和几大包零件:
然后就开始拼了。先拼出来两个Jedi。不过当时没找到lightsaber的把手所以没拿lightsaber,而且需要控诉一下的是Obi-Wan同学的头、身子和腿居然分别在三个袋子里。。。
拼啊拼啊拼,Jedi Starfighter拼好一半了。可以看到里面还是很精细的,连操纵杆都有。另外前面支出来的两个东西是可以放下来当支架的,不过我最后才知道。。。
3:50的时候Jedi Starfighter拼好了!R4-P17也在上面:
然后是那个Booster Ring,这个东西基本彻底是体力活。。。最后终于在5:10全部完成了!正面(Kit Fisto打酱油中):
背面:
这是剩下来的lego零件,不知道是容易丢的东西给了你一些备用的,还是说几个袋子里面装的东西都是固定的,于是为了凑够零件给了几个袋子,于是会多一些东西。另外还有两个贴纸没找到应该贴哪儿 -_-
最后把Jedi Starfighter从Booster Ring上取下来照个全家福
Lego的东西确实很精细,不会出现大小上的误差导致你需要很大力气才能拼上或者根本拼不上的情况。所有零件的大小设计都恰到好处,拼起来不会太费力。所以这个东西如果有山寨还真不敢买,拼的时候都会拼吐血。
另外说明书上一上来就建议把零件分类,我一开始因为床上地方小怕丢就没分类,结果找得痛苦死。最后把福娃赶出房间然后分类,拼起来就轻松多了。
大宗主伟大!乐高伟大!
tags: entertainment, toy, lego, star, wars, obi-wan, kenobi, jedi, starfighter, 7661
Wednesday, May 27, 2009
暗恋桃花源
去年年底(或者今年年初?)在保利演的时候我憋住了,现在看来是对的,因为他们又来北大了。
整个剧还是很好看的,暗恋虽然是个悲剧却也悲中带喜(其实我觉得也没那么悲剧了);而桃花源则很喜庆,最后也喜中带悲,有些“让人绝望”。黄磊和孙莉的夫妻档演的不错,年轻的黄磊带着机灵的俏皮的邪劲,而年老的黄磊也演出了沧桑感(也许是因为我想我是海的MV的经验?)。桃花源那边,何囧炅在“老板”和“袁老板”两个角色之间切换表现得不错(不过我觉得他的“老板”要更好一些),田雨的老陶虽然因为我对他不熟总在想象喻恩泰说这些台词是啥效果,但是其实他演的还是很好的。
另外一些龙套也很出彩,比如桃花源剧组神奇的顺子,和那个异常敬业一直在后面画画的哥们。不过那个神秘女子,怎么。。。那么像。。。芙蓉 -_-
接下来说几个不太好的地方:一个是桃花源过于闹了一点,也许是特意表现的无厘头?但是有些地方还是会让我觉得很无聊不好笑。另一个是两个剧同时排的时候(以前看介绍还以为大段都是两个剧同时排,被骗了),大概是因为之前暗恋走了一遍,所以暗恋这边的台词听着感觉比较自然,而同时穿插的桃花源那边的台词就给我一种刻意去凑去和暗恋呼应的感觉,不自然,不会让人觉得没有暗恋的话桃花源也还是这些台词。其实台词本身问题不大,但是节奏感(说台词的时机)凑的痕迹太明显。
总得来说这个剧不错,特别是在北大百年这种便宜地方,很超值。
tags: entertainment, show, play, comedy
Tuesday, May 26, 2009
十年
其实不止十年。
95年左右有个足球经理游戏叫USM,在那个DOS和软盘的年代,这个游戏用ARJ压缩后只用一张软盘就能装下。
这个游戏里面只能选英国的球队。那个时候国内没有英超的转播,大家在电视上只能看到世界杯和“小世界杯”,我是说,意甲。因此我对英国的球队毫无概念,只是知道好像有个叫曼联的球队很厉害。选球队的时候我就想选曼联。但是95年嘛,那个时候英文还很差,看着“Newcastle United”好像就是传说中的曼联,那就选他了。
游戏里面所有的人我都不认识,一开始默认的排列是两个门将,若干个后卫,若干个中场,若干个前锋,然后我就让排在前面的11个人上去踢了。于是我的场上有个第二门将在打后卫,而中场Lee Clark在打前锋——他还进了很多球。后来他伤了,我就从替补里面随便拉了个人上来打——这次是Darren Huckerby,终于是个前锋了——他又进了很多球。所以说这个游戏实在是很简单。
回到球场上。后来慢慢的能看到一些关于英超的报道了,比如卫视中文台曾经放过一段也不知道是英超的赛季十佳球还是本周十佳球,其中有一些David Ginola的助攻。这是我第一次在电视上看到Newcastle的球,虽然不是直播。
再后来能看到的东西越来越多。买来了Alan Shearer,欧冠上凭借Asprilla的帽子戏法主场干掉了巴萨,联赛里面5:0大胜曼联,在KK的攻势足球带领下连续两年拿第二。
但是97年初KK辞职,球队开始进入动荡。先是Dalglish,然后是Gullit,都只给球队带来了混乱。Gullit之后,Sir Bobby Robson来了,结束了混乱。
据说Sir Bobby刚来就打了场8:0,不过那会儿因为之前两任教练的混乱和高中的忙碌,我已经很久没关注英超。后来我忙完竞赛搞定保送,就又可以有时间看着Sir Bobby一步步把球队带回正轨。看到托托杯上某场比赛两个当时没人听说过的小孩Lomano LuaLua和Shola Ameobi互相助攻大发神威,看到欧冠上小组赛前三场全负后三场全胜出线的奇迹,看到Sir Bobby买来的小孩们逐渐成长,联赛里面稳定的排名在前四。
但是后来他也逐渐控制不住他买来的这些小孩的脾气,最终在04年被炒。球队又重新归于混乱。09年5月16日联赛倒数第二轮主场对Fulham的保级关键比赛,他又出现在了St. James' Park的看台上。托房奴的福当时我在他家看的天盛直播,镜头打到看台上的他的时候,解说苏东说“这场比赛也牵动了纽卡斯尔的老球迷的心”。不怪苏东没认出来他,要不是前几天官网上正好有关于他组织的义赛的新闻配了张他和Gazza的合影,我也认不出来。这是一个与癌症搏斗了十多年的76岁高龄的苍老的老人。
但是这支球队还是让他失望了。
也许那场比赛还能怪裁判吹掉了一个进球,而有了那个进球我们貌似就保级了。但是看看整个赛季的表现,没有人会觉得降级是个天大的冤情。整个赛季38场只赢了7场,并列倒数第一。整个赛季38场拿了8张红牌,排名第一。整个赛季一共有4个人曾坐在主教练的位置上,在英超也是排第一。这么混乱的一个队降级了,又能怪得了谁呢?Joey Barton评价代理主帅Shearer是"a shit manager with shit tactics",我觉得他说得很对。Shearer上任后确实振奋了士气,但是球赛不是靠气势就能赢下来的。最后一场对Aston Villa的生死战,下半场急需一个进球来保级的时候,结果一脚门框内的射门都没有,门框外的射门也少得可怜,我是怎么也看不出来这是个需要进球要拼命的球队。赛季最后的几场看到了无数视野开阔机会很好的远射机会也从来没看到他们尝试过。任命Shearer来当临时主帅率队保级,彻彻底底的就是死胖子死马当作活马医做的秀。
追随一只球队十年,却看着球队从顶峰一步步走下来最终走到降级,我的人品真的是无敌啊。
老老实实反省然后重建吧,死胖子,不然会被St James' Park里面的口水淹死的。
tags: soccer, newcastle
Tuesday, May 26, 2009
各种悲剧
悲剧的事情说的是我失手打翻了福娃的猫粮罐。
更加悲剧的事情说的是我还打翻在了猫砂盆附近。
比上面那条还悲剧的事情是我辛辛苦苦收拾了半天都快收拾干净了,才想起来应该给黑黑白白的猫砂盆拍张照。
比上面那些都悲剧的事情是我脑残把收拾出来的猫粮又扔回猫砂盆拍照。不过这个事情我没做。
btw, 长方形的猫粮罐摔地上后有点变形成平行四边形(我刚才想了半天才想起来这个名词)的趋势,不过被我掰回去了。这个例子告诉我们,还是圆形最稳定。
tags: life, cat, misfortune

















