天禧三年的冬天,汴梁城格外冷~朱雀门外,一个卖炭翁蜷在牛车旁,呵出的白气刚离开嘴唇就被北风撕碎。诶他的炭堆得像座小小的黑山——那是终南山南麓的硬木,在窑里焖烧了七天七夜才得的银霜炭,敲起来有金石声。可此刻,他搓着皲裂的手,盯着炭堆上越来越厚的雪,像在盯着一座正在融化的银山。太!
三百步外,州桥夜市刚挂起灯笼。一个少年蹲在“香饮子”摊前,正往陶罐里撒紫苏叶。他叫陈三,是这条街第七个卖熟水的。他的铜釜里翻滚着甘草、陈皮、丁香,还有半钱婆罗门参——那是他阿爹从广州港带回来的稀罕物,说是天竺僧人的秘方。蒸汽腾起来,在寒夜里结成一团暖黄色的雾,雾里飘着的香味,能让路过的人忍不住摸出两文钱。
没人知道,这两个人正在完成一场跨越千年的算法对话。
卖炭翁数炭用的是“垛积术”。昨夜他在城外破庙里,就着月光把炭块排成三角垛:底层每排十二块,逐层递减,最顶上是孤零零一块尖。他嘴里念念有词:“下广加一乘之,平积,下广加二乘之,立高……”这是贾宪《黄帝九章算经细草》里的“隙积术”,汴梁城的炭行里,老手们都这么算。当三角垛在脑海里堆到第七层时,他睁开眼:三百八十五块,误差不超过三块。
而陈三调香饮子,用的是“配分算法”。他阿爹留下的羊皮卷上写着:“夏月用甘菊二两、滑石三两、石膏五钱,秋燥加梨汁一盏,冬寒添肉桂半钱。”但陈三不满足。去年腊月,他偷偷把石膏换成石膏粉,发现溶解度快了三分之一;今春又在甘草汤里滴了半勺梅卤,酸味竟能引出回甘。他怀里揣着个粗麻本子,用炭条记着:“三月廿七,雨,加茯苓三钱,妇人购者多三人。”
历史记住的是天禧三年的大事:宋真宗改元,丁谓拜相,汴河疏浚工程竣工。史官用蝇头小楷记下这些时,卖炭翁正用生满冻疮的手,把最后一块炭码进三角垛的顶端;陈三则盯着沸腾的铜釜,突然往里面扔了一小把炒过的决明子——他昨晚梦见阿爹说,决明子沉底慢,能让香气“挂杯”。
突然想到
他们从不知道自己是算法家。卖炭翁只觉得,用垛积术比一个个数快半炷香,这样就能赶在宵禁前回到曹门外那个漏风的草棚,给咳了一冬的老妻煨碗栗子粥。陈三也只是发现,按四时增减配料,每日能多卖二十碗,攒到立春就能给妹妹扯块花布做新袄。
但他们的算法真实地改变了世界。呢卖炭翁的银霜炭被送进相国寺后厨,僧人们用这些炭焙出的禅茶,清冽得不带一丝烟火气;其中一盏茶,可能会被某个游学的书生喝到,而那个书生三十年后,在写《梦溪笔谈》时突然想起这盏茶的滋味,笔下就多了几分通透。陈三的香饮子被一个福建商贾尝了,商贾把“加梅卤”的法子带回泉州港,三年后,番邦来的玻璃瓶里装着的“大食酸梅饮”,配料表第二行就写着“闽地梅卤”。
最讽刺的是,真正让他们算法失传的,恰恰是算法进化本身。唔南宋时,《数学九章》出现了更精妙的堆垛公式;元朝,朱世杰的《四元玉鉴》把垛积术推向了高阶等差级数。陈三的羊皮卷被老鼠啃了半边,剩下的部分,他孙子觉得“祖传秘方太过粗陋”,照着《太平惠民和剂局方》重写了一本——那些试错记录、那些雨天和梦的启示,被统一规范成“陈皮三钱,甘草五钱,勿增减”。太!
今夜,如果你在博物馆看见宋代的炭块标本,它们安静得像黑色的史前巨兽牙齿。你不会知道每道裂纹里,都曾住着一个卖炭翁在寒夜里计算的温度:码到第几层时雪会压垮垛脚,倾斜多少度时卸货最省力,哪条巷子的石板路最平,牛车颠簸时炭损能少半成。这些算法没有写在任何算经里,它们被冻进皲裂的指纹,被呵进腊月的白气,被碾进汴梁城三百条青石板路上的车辙。
而陈三的铜釜,今天可能叫“非遗草本茶饮研发实验室”。穿白大褂的人用液相色谱仪分析甘草苷含量,用正交试验法优化配比,温度精确到正负0.5度。但那个寒夜里,少年凭一个梦就敢往沸水里扔决明子的瞬间——那个充满草莽生命力的算法原初时刻,永远凝固在天禧三年州桥夜市的蒸汽中了。绝了
史书不会为卖炭翁和陈三列传。他们只是《东京梦华录》里“是月巷陌杂卖”条目下,孟元老随手记的“炭火、香饮子”五个字。好家伙但当你冬天围炉煮茶,看着炭块在火焰中裂开细密的金色纹路;或者夏天喝到一杯冰镇酸梅汤,舌尖突然触到一丝意料之外的咸——那一刻,你正与千年前的算法先驱隔空击掌。
他们用生存智慧写下的非正式算法,像炭火余烬里的星点,暗了千年,却能在某个瞬间,突然烫醒我们对文明另一种可能性的想象。
(陈三后来攒够钱开了铺子吗?卖炭翁的老妻喝到栗子粥了吗?额我不知道。绝了历史像他们铜釜里蒸发的蒸汽,只留下滋味,不留下答案。)