Life

T-shirt图片选定

经过千筛万选,终于敲定印到T-shirt上的图片。感谢董溥同学帮忙处理图片。我们明天就准备出去印~~欧耶~!^_^..

图片如下:

至于上面的图片嘛,有点儿少儿不宜,所以未满18岁的小p孩就请自觉离开好了~!

要是您满18周岁了,还看不懂,可能说明下面几个问题:

1. 八成您不懂Unix/Linux;

2. 如果1不成立,那就是您太单纯了,不懂如何泡妞……恩,三好学生~!

3. 如果2不成立,那就是您反应太迟钝了……抑或是您还要在Linux上运行一下试试?

本人不会对上图作任何解释!!

一道智力题引发的数学问题

林小峰同学在其博客上贴了一道智力题,我上次回复没仔细看题,还以为是老掉牙的称8个球的问题。刚才仔细一看原来不是,这题以前还真没见过。于是就仔细想了想,抱着“不走寻常路”的观念,花了15分钟本以为想出乐,结果发现其实不对。题目如下:

题目:有12个乒乓球特征相同,其中只有一个重量异常,现在要求用一部没有砝码的天平称三次,将那个重量异常的球找出来。 (尤其特别注意:是异常,但不知是轻了还是重了

对比网上的答案又看了一下,发现以下两个问题:

1. 其实分4组是不可能称出来的。

2. 三步其实最多能从13个球中称出。

网上流传甚广的解法如下:

把12个球编成1,2……12号,则可设计下面的称法:

左盘 右盘
第一次 1,5,6,12
2,3,7,11
第二次 2,4,6,10 1,3,8,12
第三次 3,4,5,11
1,2,9,10

此法的巧妙之处在于,通过合理的安排三次称重中球的位置,使得不同的结果能够得出不同的结论。这似乎涉及到信息论的知识(香农老先生好伟大啊……) 。

如果我们把它抽象成数学来看,大体如下:

用一个12bit的数表示称量状态,第N(1<=N<=12)bit表示第N个球被选中来进行称量。

首先,我们必须分三组来称量,直观上来看,是因为3^3=27刚好大于12x2=24,通过裁剪我们有可能把27削减到24。而如果分4组,3^4=81,削减到24的可能性很小。(谁能给出准确证明?)

其次,若分三组的话,我们如何通过合理设计把结果可能性削减到24?最基本的一个要求不能动:就是每个球必须放过,即:每一位都至少被置过一次1,这样才能保证不会出现三次称量都平衡的局面。这样也把27削减到了26。还有两种情况应该也能排除,那就是三次均为左或三次均为右的情况,这很简单,我们只要保证一个球不是三次都在左边或右边就行。

好了,我们把上面的要求转化成数学。先是每次放法的数学表示,可以用这样一个二维数组,里面有三组元素,代表三次称量,每组又有两个元素,第一个代表该次称量天平左边放入的球,第二个代表右边的球。上面的两个要求就变成了:

u12_t balls[3][2] ;

balls[0][0] | balls[0][1] | balls[1][0] | balls[1][1] | balls[2][0] | balls[2][1]==0xfff

balls[0][0] & balls[1][0] & balls[2][0] == 0

再往下走就是对这些数的筛选和判断了。筛选很简单,每个数必须是12位上的某4位置了1,其它8位均为0。这样的数共(12x11x10x9)/(4x3x2)=495个。我们每次要从里面挑6个,来进行判断,判断的方法是:对于上面说的24种情况,其中一半又是对称。这12种情况中每个情况下得出的结果必须是12位上只有一位置1的数,它就表示处于该位上的球是异常球,而且还不能重复。操作过程如下:

1. 对于每组元素,要么取其第一元素,要么取其第二个元素,要么取这两个元素的同或(至于为什么是同或,就留给您思考了)。

2. 把上面得到的三个结果进行按位与。

3. 遍历完这12种情况,把每次得到的结果或起来。若是0xfff,符合要求;否则淘汰。

这样,一个程序的雏形基本上就出来乐,如果不再进行优化的话,大概要进行237832111537020次计算。有兴趣的同学可以用Python来完成整个程序。(友情提示:Python里面的位操作和C里面的一样。)

写程序,过中秋

王小敏同学昨天给俺出了道题,还非得要求用C,结果差点儿没累死……换我们可爱的Python,结果一会儿就搞定了。题目是这样的:

“有一个3x3的矩阵,现在要往里面填9个不同的数字。唯一的要求是:相邻的数字相加不能为质数。注:数字的取值范围为:1~N。(N为一个>=10的数)请用程序解出尽可能多的符合要求的矩阵。”

俺穷举了一把,就得出结果乐~~我的程序如下:

! /usr/bin/env python

def Perm(items, n=None):
if n is None:
n = len(items)
for i in range(len(items)):
v = items[i:i+1]
if n == 1:
yield v
else:
rest = items[:i] + items[i+1:]
for p in Perm(rest, n-1):
yield v + p

neighbors = [[1, 3], [2, 4], [5], [4, 6], [5, 7], [8], [7], [8]]

def IsPrime(x):
for i in range(2, x/2+2):
if (x%i == 0):
return False
return True

def WantIt(listobj):
for i in range(len(listobj)-1):
for j in neighbors[i]:
if(IsPrime(listobj[i]+listobj[j])):
return False
return True

enum = Perm(range(1, 11), 9)
for k in enum:
if(WantIt(k)):
print k

打住,这道题就到此为止吧。

接着说那令人心醉的patch。前几天做的一个patch提交了3次终于被Andrew给纳入-mm树了,呵,不容易啊!当中还正好赶上-mm树更新,不过quilt push一把居然没错!好险!要不今天也见不到akpm的确认邮件……说不定我还在那里痛苦地wiggle……

由于mm同学今天来不了,所以俺就闲得没事干了,又正好赶上-mm又更新,干脆又把内核编译一把。N个小时后,把我搜集的warnings打开一看,发了,N多。挑了其中两个好修复的,又提交了两个patch。欧也!

说patch不能不提我们的fmail,昨天一口气提交了N个patch,Carlos都给apply上了。我对Carlos的名字很感兴趣,其实他的全名是Carlos Daniel Ruvalcaba Valenzuela,太长了!貌似应该是俄罗斯人。

T-shirt候选图片

按照往年惯例,今年也准备自己去印个T-shirt。为了推陈出新,这次我拿出几个新颖的方案,希望大家各抒己见,多多发表自己的看法。

1. 冒充数学家

用此作为T-shirt图案最大的坏处就是怕被追问:“哥们,您这公式是啥意思?来,给你张纸,给俺证明一下吧?”……

2. 科幻派

啥都不说了,科幻粉丝都知道这是什么意思~

3. 实力派

(待定)因为没找到当初comp.lang.c上的那个很酷的签名,所以此方案暂时搁置……

如有其它更好的方案,还望不吝赐教!

这几天不爽

这几天没写博客的心情,不爽~!

大忙了一阵子,突然闲下来了,还不适应,不爽~!

虽然手头有N多活要做,可不知道该怎么下手好,不爽~!

做了几个小玩意儿(U盘上的Ubuntu,xylftp的rpm包),比意料中简单狠多,不爽~!

陷入读内核源代码的汪洋大海,没什么头绪,不爽~!

邀请某MM中秋节来我们这玩儿,人家来不了,不爽~!

以前见到的一个长得很酷的MM最近一直没见到,不爽~!

大周末的我还在这里闲得写这篇博客来列举我的不爽之处,不爽~!

总之,不爽~!

更换服务器

鉴于国内的河蟹已经“兵临城下”,决定把服务器搬至国外服务器。

感谢董溥同学提供空间。

BTW:根据某mm建议,更换主题。希望用IE的同学帮忙测试一下效果。

自由软件日活动顺利结束

这本该是昨天的文章,因为昨天拨号没拨上去,只能搁到今天了。

我们不是CCTV,CCTV整天报道得就像已经进入共产主义社会似的,会议没有不隆重的,闭幕没有不顺利的,领导没有不亲切的……

虽然两位嘉宾和老师们对这次活动评价都很好,但这里我就不说好的,专挑这次活动的几个不足之处说。毕竟我这是头一次组织这么大型的活动,没任何经验,总结一下不足,以备以后改进。

最大的不足,我认为,应该是我们对“自由软件”和“开源软件”的区别认识不够,基本上是混为一谈。听了徐继哲先生的讲话后才明白了些许。徐先生对这点表示遗憾,说要不是因为这他还可以把我们这次活动传到FSF上去。

其次就是发T-shirt,一是发T-shirt时现场过于火爆,场面稍稍失控,主要是低估了那些T-shirt对同学们的诱惑力;二是我们太大公无私了,最后连我们自己都基本上没拿到什么礼物。没事,我们自己做!“自己动手,丰衣足食!”哈哈!

最后一个不足,应该是王开源先生的演讲太过官方化,没把他在底下和我们讲时那种气氛弄出来,让不少人失望了,而刘洋兄更是乱了阵脚。

能举办这次活动要感谢很多很多人,抱歉,这里很难一一列举。我只想特别感谢的是杨爽老师,没她的鼎力协助不可能有这次活动!我也没想到她那么厉害,院里的几个领导她都可以帮忙说服,不愧是韩老师的得力助手。这让吾不得不佩服。

BTW1:我们邻班一个吴姓女生竟然拿到了一个Python的T-shirt,不过过后让我忽悠过来了,代价是让我请她和她男朋友吃顿饭…… 我估计这钱都够我买一件的了……

BTW2:董溥同学好幸运啊,晚上拜访徐继哲先生时,王开源先生一听说我们没拿到T-shirt竟然当场把自己穿的脱给了董溥同学……我当时都愣了……

自由软件日活动将在西邮举办

真是无巧不成书。决定在西邮举办西北第一次自由软件日活动完全是一个巧合。我听说自由软件日这个活动也仅仅是在几个月之前,当时只是想在小组内搞一个小的活动庆祝一下。直到到了北京,见到了袁萌老师和王开源先生,无意中向他们透露了我的这个想法,没想到竟然得到了他们那么大的赞同。王开源先生还主动要求自费到西邮来帮助我们组织这个活动,我们也不得不把这活动搞得大一些了。

现在活动的准备工作基本上已经就绪,感谢计算机系的大力支持,特别是韩老师,杨老师,陈老师,王老师,也非常感谢这几天一直在帮忙宣传的同学!预祝明天的活动成功!

BTW1:今天西安的天气超级好,能见度特别高,从宿舍里看秦岭特别清晰。难道这就是传说中的秋高气爽?希望明天也会有这么好的天气!

BTW2:非常喜欢徐继哲先生哲思网上的T-shirt,居然还有美女穿着show一下。特别尤其喜欢那个“人生苦短,我用python”的T-shirt,不知道明天有没有这个,还有俺能不能拿到一件……(流口水……)

 

忽悠,接着忽悠

本人被中国教育彻底折服,NND,除了人才培养不出来,啥样的奇形怪状的、五颜六色的、五花八门的人都能培养出来!鸟大了什么林子都有!

我们这垃圾教育根本就不把你当人才培养,除了想法设法地从你身上挣钱外就是忽悠你~!你忽忽悠悠就变成蠢才了!真乃理论上的决杀!绝对不要给人才任何机会!

“不长”同志,猪撞树上了,你撞猪上了吧?追尾了是不是?