昨晚在整理邮件,翻阅到这样一封邮件,它来自我的老师郭军,曾经教我 COP(面向组件编程)课程的老师。这个邮件的始末是这样的,郭老师在课上扯到了一道题,在现在看来是再简单不过的题目了,对于给定的 n,要求只允许用一层循环,打印这样的星号(下例中 n=3):
* *** ***** *** *
因为只能用一层循环,所以当时是这样实现的:
int n=3; int row,col,mid; for(int i=1;i<=(2*n-1)*(2*n);i++){ row = i/(2*n)+1; col = i-(row-1)*(2*n); row>n?mid=row-n:mid=n-row; //相对于中间行恒正的行偏移量 if(!(i%(2*n))) printf("\n"); else if(col>mid && col<n*2-mid) printf("*"); else printf(" "); }
现在看来似乎题目是没什么大不了,但对当时的我来说,课上在脑子里记下了题目,觉得好像可以解决,课后完成以后就发给郭军老师。没想到他给我回复了邮件,邮件说:
发件人: 郭军
发送时间: 9 月 8 日 09:14
收件人: Ray Chase
主题: 回复: 星号题目 一层循环 我的方法很好!
对于平庸的开发者,这是个难题。对于优秀的开发者,这太过简单。
希望你能够永远保持一颗谦虚、向上、进取的心,并且能够和别人愉快地合作,做出一番事业来(不一定是大事业,但一定是有意义)。
郭军
邮件写得很简单,但是对当时的我来说,还是莫大的鼓励。工作以后发现,对于梦想的坚持,无疑是艰苦和孤独的。一封小小的邮件,确实可以改变一个人。
老师的意义在于传道授业解惑,但是老师难做地方在于,这个职业太容易对学生施加影响,无论是什么性质的影响。正所谓有心栽花花不开,无心插柳柳成荫,那些课堂上的故事未必记得太多,可是某些细微的举动,却能对学生有长远的影响。因此,那些特别优秀的老师,没有必要过于纠结他在课上的教学,不如看看他在课下、在业余时间是怎样影响学生的。
反之,许多牛人、高手、顾问却只热衷于自己的小圈子里,对同样的知名人士热忱相待,积极互动,但是对于一些资历尚浅、身份普通的朋友却毫无兴趣,冷眼相待。要不就对于他们的来信和言论摆出一副老资格的样子,言行中充满强势和不屑。这兴许是这个行业的通病?
而另一方面,很多入涉软件行业不深的程序员,却自惭形秽,自嘲码农,觉得自己做着苦逼的简单劳动,觉得只是要混个青春饭吃。可是中国的互联网环境,终究要靠他们来拯救,而不是现在那些卖弄成就和故事的“ 成功人士”。我想,都是对软件的兴趣培养了那么多人,倘若给这些不够自信的程序员一个更宽松和更多支持的环境,他们会做出更有价值的东西来。而老师,有着不可替代的意义。希望在适当的时候,我也可以尽一份力。
教师节马上要到了,祝愿天下的老师节日快乐。
文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》
很好的老师!我特意过来顶
文章确实不错,支持下先,欢迎您也来我的小站 www.zdkan.com 壬辰年 (龙) 七月廿五 2012-9-10
自己写了个,完了才发现我其实还是用了二重循环。。。
val n = 3
var i = 0
while (i < 2*n-1) {
var step = i
if(i>= n)
step = 2 * n – 2 – i
print( " " * (n-1-step))
print( "*" * (2 * step + 1))
print( " " * (n-1-step))
println()
i += 1
}