神机妙算:一本关于算法的闲书
顾森
代序
多年前的一个晚上,本书作者找到我,说会在《程序员》杂志连载一系列文章,主题是生活中的算法。连载结束后,会集结成册汇成一本书,他想请我为这本八字还没一撇的书绘制插图。
一开始我是拒绝的。我既不是专业插画师,对所谓生活中的算法也没什么概念,这本书能不能顺利出版也还是未知数,但在他的一再坚持下,最终还是答应了这个缥缈的请求。当时我俩谁也没想到,他所说的这本书,从连载到最后成型出版,整整酝酿了八年。这八年间,我已经和他结了婚,我们的两个孩子都比这本书先“问世”了。
连载的那段时间,他每完成一篇文章,都会先发给我看看。而我作为这个系列的第一个读者,每次看完都会反馈给他能不能看懂、有没有问题、好不好玩,从一个业余读者的角度,尽可能地监督他把问题简单有趣地讲明白。
一个算法,可以讲到它的前世今生,讲到它在生活中的应用,就连我们在生活中遇到的真实问题,也被他写进书里做例子,甚至附上了日期时间。跨越八年,有些例子也带上了些许年代感,令人感叹。
临近出版,该给书写个序了。他坐在我边上盯着屏幕发呆,似乎没什么思路。瞄了一眼屏幕,这个家伙竟然在一本正经地搜索“如何给一本书写序”……我说要不我先从我的角度写写吧,抛砖引玉,看看我写完能不能给你点灵感。于是便有了这篇代序。
蔡雪琴
2021年8月 序言
小学时,我特别喜欢解数学谜题。为了把狼、羊、白菜运到河对岸,为了找出重量较轻的那枚假币,为了在3分钟内煎好全部大饼,为了判断出谁是骑士谁是无赖,我常常会废寝忘食地在纸上写写画画,最后为自己发现了答案而兴奋不已。有个谜题让我至今记忆犹新:把4个A、4个B、4个C、4个D排成一个4×4的方阵,使得每一行都没有重复的字母,每一列也没有重复的字母。我把它解决了,而且获得了更大的爽快感。因为,问题的答案并不是我盲目地试出来的,而是用一个自己想到的“招数”得出的。在第一排按顺序写下A、B、C、D这4个字…