《枕边算法书》阅读笔记(2)

    继续读书,发现了几句能让人产生共鸣的句子。“一名优秀的程序员并不是只坐在电脑前拼命编程的人,而应当喜爱接触新鲜事物,拥有广泛的兴趣爱好。因为,想象力只有通过接触生活中的各种事物才能得以丰富。”虽然我不算优秀的程序员,但我是认同这段话的。我自己除了工作编程之外,其他生活中兴趣也有很多,运动、养宠物植物、乐器等等,这些兴趣并不能直接的解决工作中遇到的问题,但是编写的程序其实最终是服务于人的。生活中除了编程以外,还有很多有意义的事情,不让自己成为一个游离在时代之外的人,接触生活中各种事物是很有必要的。而你与同事多聊聊热点事件、拔草某个美食、育儿经之类的,自己的沟通能力会不断提高,这种能力这对工作中的沟通,尤其是非技术人员提出需求时的沟通是非常有帮助的。

    另一段让我觉得不错的话是:编程并不像一个人玩的围棋或网球,更像是足球,需要整个团队的相互团结、相互配合,这样才终能成功。想要完成一个项目必须分工合作,所以不仅需要个人能力,更重要的是团队合作。无论程序员个人能力有多强,如果他独断专行,他就是项目组的弊端。相反,再弱的程序员也有超过别人的技能,重要的是有认真合作的态度,这才能成为项目的重要支柱。这个我也是有深入感触的,曾经在一个项目组,所有人都能力出众,每次遇到问题大家都是“深入交换意见”,也就是“各说各的,分歧很大,谁也说服不了谁”,当然,最后项目在大家陷入长期的加班后,黄了。我刚工作时,所在的团队能力层次很清晰,有大神,有几年经验的熟练工,也有我这样的新手,大家各司其职,推进项目的同时也能学习提高自身的能力。

    插播书中一题纯数学的,冯·诺依曼关于无穷级数的题:两列相距150英里的火车相向而行,第一列火车时速60英里,第二列火车时速90英里。第一列火车头上有一只苍蝇,先飞向第二列火车;到达第二列火车头后,又折返飞向第一列火车,如此往返,直到两车相遇。如果苍蝇的飞行时度是120英里,那么最后苍蝇飞行多远?

    接下去看了3个问题,逐个回忆一下。第一题:能保存99个数值的数组item[0], item[1],...,item[98]。有100个数{1,2,3,..., 100}。随机从这100个数中抽取99个保存到数组中,编写程序找出剩余的数值。书中用了一个很讨巧方法,因为1~100的和是5050,于是定义了一个int sum=5050; 然后for循环逐个减去item[i]的值,最后剩下的值就是那个没被保存进数组的数。这个方法是快捷的,但是实际中的大部分情况,我是不建议这么写的。首先直接定义一个int,这个5050其实就是传说中的“神秘数字”,如果不加注释,阅读这段代码的人很可能不知道这个5050是怎么来的。其次,可扩展性很差,现在是100个数取99个,如果是200个数取199个呢?如果是100个数取98个,分别找出剩余2个数呢?

    第二题是编写一段函数,判断输入的字符串是不是回文。这题其实很简单,但是书中也指出了示例代码中的可以优化之处,在for循环中,每次都要判断if(inputString[index] != inputString[length - 1 -index]), 此处应该在for循环之前就定义一个变量等于length-1,否则for每次循环都要计算一次length-1,这是降低运算效率的。

    第二题引申出了一个有趣的问题:①选择任意整数。②翻转此数字(例如选择13,翻转就变成了31),将两数相加(13+31)③相加结果如果不是回文,重复执行第②步,直到是回文为止。 例如:13+31=44,是回文,终止。19+91=110,110+011=121,是回文,终止。当有人提出:“是否所有数字都能找到对应的回文数”时,数字196出现了。学者们为了计算196可以说是非常疯狂了,有人计算到了7000万位,依旧看不到出现回文的任何征兆。其实196能否计算到回文这个问题没有太大意义,因为对人们的生活没有任何影响。但是即使如此,人们还是不愿放弃,依旧在探索196的秘密。人们就是有时会为了一些连“为什么”都不必问的事情贡献了自己的一生,有些人会选择自己看不到回报又充满冒险的旅程。很多算法都是经历过这种不问缘由的冒险才公诸于世的,向充满不确定因素探索未知世界的人,才能成为历史的主人。

    第三个问题:随便说个年月日,那天是星期几?为了解开第三题,书中介绍了“康威的末日算法”(Jhon Horton Conway,Doomsday算法)。这个算法其实并不复杂,设定了每年2月最后一天(2月28日或2月29日)为“末日”,其实就是一个参照。那么当年的4月4日、6月6日、8月8日、10月10日、12月12日,以及5月9日、9月5日、7月11日、11月7日、3月7日,这些天是与“末日”的星期几是一样的。以上这些内容,单独拿出来,也可以省去不少翻看日历的时间。如果是任意年份,也就是说只需要知道每年的“末日”是星期几,就可以推算出当年的任意日子是星期几。而这个的关键就是“闰年”和每年的“末日”是星期几的“找规律”上,这里就不再讨论了。当然,最后也可以参照书中缩写,自己探索“康威的末日算法”,写一套代码,输入任意年月日计算出输入的日期是星期几。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,911评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,014评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 142,129评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,283评论 1 264
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,159评论 4 357
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,161评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,565评论 3 382
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,251评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,531评论 1 292
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,619评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,383评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,255评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,624评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,916评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,199评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,553评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,756评论 2 335

推荐阅读更多精彩内容