You are currently browsing the category archive for the 'fun' category.
电影导演之一丹.史特曼表示,台湾观众的反映确实非常政治化。他说:“台湾观众比较显著的差别就是他们提出的问题比较政治化。美国的观众比较有兴趣的是历史的部份。但是在这里,人们关心日本和中国以及台湾和中国之间的紧张关系。但是我们实在无法回答这些问题。”
他(丹.史特曼)说:“现在在伊拉克发生的情形在某种程度上就像当年在南京的情况。我不认为美国军人表现得那么粗暴,但是确实有成千上万的伊拉克百姓因为战争丧生,他们不是攻击美国的敌人,而是妇女和小孩。这和当年的南京一样。”
我的问题:1,史特曼能把1937年发生在二战中的有意识的屠杀事件和今天的美军联系起来,为什么还会觉得台湾观众的反应“确实非常政治化”?2,是美军还是“抵抗力量”热衷于杀害平民?如果是前者,请描述一下美军的屠杀计划,如果是后者,为什么伊拉克和“当年的南京一样”?
Matrix Reloaded 的动画师过去4年以14×7的工作量勤奋制作着Killer Bean Forever,从 Michael Nielsen 的blog看来的。
Smullyan的书 to mock a mockingbird and other logic puzzles 中的一题,我用Cartman替代书中的名字。
Cartman兄弟四人,分别叫Cartman1、Cartman2、Cartman3、Cartman4,他们外表完全一致,特点见下图:

关于什么是(in)accurate,体现在以下问答中:
问:“1+1等于2么?”(要求回答“是”或者“不”)
答:
Cartman1:“是。” (知道正确答案,并且说实话)
Cartman2:“不。” (知道错误答案,并且说实话)
Cartman3:“不。” (知道正确答案,并且说谎)
Cartman4:“是。” (知道错误答案,并且说谎)
Smullyan的题目:你去Cartman兄弟家时,看见一张照片,里面有四兄弟中的一个,如果你分别问Cartman兄弟中的某人:“这是你的照片么?”,三个人回答“不是”,另外一人回答“是”。当你问“你相信这是你的照片么?”,同样是三人回答“不是”,一人回答“是”。
你知道照片里的fat ass是Cartman兄弟中的哪一个么?

(南方公园的图片全部来自网络,文字是我添上的。)
打印自身的程序不是什么新闻,但是是很有意思的。当一个程序以自身(这里指源程序)为参数时,可以输出自己,也可以推而广之把源码自身进行各种处理,比如计算源程序文件的md5sum。
想出一个这种程序的过程是很有趣的,恰如Ken Thompson在 Reflections on Trusting Trust 中所言:”If you have never done this, I urge you to try it on your own. The discovery of how to do it is a revelation that far surpasses any benefit obtained by being told how to do it.”
这种程序的基本结构分成三部分,如下图所示:

其 中部分3是程序,1+2是data,string的内容就是string声明之后的内容。在程序中首先要把部分1作为string输出,然后是 string S的内容,其中的escape sequence(转义序列?)要特殊处理,比如\n变为\\n等等。这部分对应上图部分3中的print2(S),即输出data部分,所有 string S中的escape sequence要以literal的方式输出,比如\\不能输出为\而要输出为\\。print1(S)是输出程序部分,这时不再需要literal方 式输出escape sequence。
下面是个python小程序,先输出自身,再输出源程序的md5sum,目的是表明“输出源程序本身”只是“以源程序本身作为参数”的一个特例。
s="import sys\nimport md5\ns2=\"s=\\\"\"\nfor c in s:\n\tif c == \"\\n\":\n\t\ts2+=\"\\\\n\"\n\telif c == \"\\t\":\n\t\ts2+=\"\\\\t\"\n\telif c == \"\\\"\":\n\t\ts2+=\"\\\\\\\"\"\n\telif c == \"\\\\\":\n\t\ts2+=\"\\\\\\\\\"\n\telse:\n\t\ts2+=c\ns2+=\"\\\"\\n\"\ns2+=s\nprint s2\nsys.stdout.write(\"** md5sum of this source = \"+md5.new(s2+\"\\n\").hexdigest()+\"\\n\")"
import sys
import md5
s2=”s=\”"
for c in s:
if c == “\n”:
s2+="\\n"
elif c == "\t":
s2+="\\t"
elif c == "\"":
s2+="\\\""
elif c == "\\":
s2+="\\\\"
else:
s2+=c
s2+=”\”\n”
s2+=s
print s2
sys.stdout.write(”** md5sum of this source = “+md5.new(s2+”\n”).hexdigest()+”\n”)
点击下载程序,md5sum self.py的结果是:
57b814596d57dc2c503a26b2003fb181 self.py
这和self.py的输出是一致的。
Update:
严格地说,上面程序有点画蛇添足,因为源程序中并不包括md5sum的结果,这里有个稍加修改的程序self2.py,仅输出源程序自身。
