第13章 第 13 章

凌晨三点的机房,只有顾以风面前的电脑还亮着。

幽蓝的屏幕光在他脸上投下深浅不一的阴影,指尖敲击键盘的声音被空旷的房间放大,像春蚕在啃食最后的桑叶。代码编辑器里,一行行绿色的字符正在缓慢生长,构成一个复杂的递归函数 —— 本该是为下周的程序设计竞赛准备的优化算法,此刻却歪歪扭扭地,朝着某个不可控的方向蔓延。

他停下动作,指尖悬在 Enter 键上方三毫米处。屏幕右下角的时间跳成 03:17,□□ 图标有一下没一下地闪着,是盛夏发来的那句 “今天的钢琴曲很好听”,已经晾在对话框里四个小时零十二分钟。

顾以风的指尖在触控板上滑动,调出隐藏的文件夹。里面只有一个文档,命名是一串乱码 “053 075 06D 06D 065 072”—— 用十六进制转成 ASCII 码,是 “Summer”。

文档创建于雨夜分耳机的第二天。

那天回到宿舍,他把湿透的衬衫扔进洗衣篓时,指尖还残留着耳机线的触感,温热的,带着点潮湿的汗意。钢琴曲的旋律在脑子里盘旋不去,不是 CD 里的完美版本,而是混着雨声、带着她呼吸节奏的那个版本。他坐在书桌前,打开电脑,本想继续调试算法,光标却在空白文档里晃了很久,最终敲下的,是完全无关的字符。

include stdioh int main char heart

编译结果是红色的报错:error: initializer string for array of chars is too long

他盯着那行报错看了三分钟,忽然低低地笑了一声。活了十八年,拿过十五个国际竞赛奖项,在 IOI 赛场上用七十二小时写出过让裁判惊叹的核心算法,居然会在定义字符数组时犯这种低级错误 ,把 “Summer” 当成五个字母,忘了算结尾的空字符。

像个刚学 C 语言的新手。

窗外的月光穿过百叶窗,在键盘上投下细长的影子,像谁的手指在琴键上跳跃。顾以风想起雨夜分耳机时,盛夏的耳尖蹭过他手背的触感,很轻,像羽毛扫过,却让他敲代码的手在那一秒失了准头。

他重新修改代码,这次用了字符串指针:

include stringhint main

char summer "盛夏";while

printf ("我循环遍历了所有可能,最终的最优解是 s", summer);

编译通过了,却在运行时陷入死循环。屏幕上反复滚动着 “我循环遍历了所有可能,最终的最优解是盛夏”,绿色的字符像条没有尽头的河流,把他的影子泡得发涨。

顾以风按下 Ctrl C 强制终止程序,屏幕上跳出 Program terminated with signal SIGINT 。他靠在椅背上,盯着天花板上的吊扇。扇叶积着薄薄的灰,在月光里缓慢转动,像在计算某个无解的方程式。

他不是个擅长表达的人。

小时候参加信息学奥赛,颁奖礼上被要求说获奖感言,他站在台上,对着聚光灯只说了句 “谢谢编译器”,引来台下一片哄笑。后来进了国家队,教练评价他 “代码比语言更有温度”,那些简洁、高效、逻辑严密的字符,能精准地表达他所有的想法,从排序算法到路径规划,从神经网络到量子计算,唯独解释不了心跳的异常。

比如此刻,胸腔里的震动频率明显高于静息状态,像有个劣质的振荡器在里面嗡嗡作响。

他点开文档,开始第三次尝试。这次不用 C 语言了,换了更贴近自然语言的 Python:

def love (summer):

if len (summer) :

return False else:

for i in range (1000000):

print ("第 n 次心动" format )

return True

love ("盛夏")

运行结果是不断刷新的 “第 1 次心动”“第 2 次心动”…… 直到内存溢出,屏幕上跳出 MemoryError 。他看着那串红色的错误提示,忽然想起图书馆的 0.7 秒对视 —— 她的瞳孔在阳光下是浅褐色的,像加了滤镜的琥珀,里面清晰地映着他的影子,比任何调试工具都更能暴露他的异常。

原来心动是会内存溢出的。

顾以风关掉 Python 解释器,打开绘图软件。他很少用这种可视化工具,手指在数位板上显得有些笨拙,线条歪歪扭扭,像刚学画画的小孩。但他画得很认真,先画了坐标系,横轴是时间,纵轴是心率,然后用红色的曲线连接起一个个点:

军训夜跑时,看到她弯腰咳嗽,心率 112 次/分;

医务室走廊,监护仪显示她血氧下降,心率 108 次 / 分;

理论课上,她的笔没水时,心率 124 次 / 分;

图书馆对视 0.7 秒,心率 136 次 / 分;

雨夜分耳机,她的肩膀碰到他时,心率 142 次 / 分。

曲线最后冲上屏幕顶端,像座陡峭的山峰。他在旁边用小字标注:数据异常,无法拟合函数。

其实是可以拟合的。用最小二乘法,总能找到一条近似曲线。但他不想。那些心跳不是冰冷的数据,是她咳嗽时发颤的肩膀,是她接过铅笔时泛红的耳尖,是她耳机里漏出的钢琴声,是所有无法被算法定义的瞬间。

机房的空调突然响了一声,冷风卷着灰尘吹过来,拂过他的后颈。顾以风打了个寒颤,指尖的温度却在升高。他重新打开代码编辑器,敲下一段全新的代码,这次不用任何编程语言,而是用了最基础的伪代码:

算法:向 Summer 告白

输入:所有关于她的碎片(哮喘喷雾的薄荷味 / 速写本上的小猫 / 解题时咬笔的习惯)

输出:无法定义

步骤 1:观察她的呼吸频率,确保不引发哮喘

步骤 2:选择合适的场景(排除人群密集处 / 避免强光直射)

步骤 3:组织语言(删除所有专业术语 / 控制在 20 字以内)

步骤 4:执行告白

异常处理:

若她拒绝:返回初始状态,继续观察

若她接受:无法定义

他在 “无法定义” 的位置停留了很久,敲了又删,删了又敲,最终只留下一个空白的注释符/。

该怎么定义接受后的状态?是像并查集那样合并两个独立的集合,还是像双向链表那样建立永久的连接?好像都不对。那些逻辑严密的数据结构,解释不了想要靠近一个人的冲动。

窗外的天色开始泛白,远处传来清洁工扫地的声音。顾以风保存文档,关掉电脑。屏幕熄灭的瞬间,他的影子在墙上短暂地扭曲了一下,像个被揉皱的纸团。

他站起身,走到窗边。晨雾还没散,香樟树的轮廓在雾里若隐若现,像幅未完成的素描。昨天傍晚,他在这里看到盛夏抱着速写本往图书馆走,军绿色的裙摆扫过草地,带起一串细碎的蒲公英,其中一朵刚好落在她的发梢上。

那个画面,他记了整整十二个小时。

顾以风从口袋里摸出手机,点开与盛夏的对话框。那句 “今天的钢琴曲很好听” 还躺在那里,像颗等待被拆解的数据包。他的指尖在屏幕上反复摩挲,最终敲下一行字:

明天下午三点,图书馆三楼,有本《算法导论》想借你。

发送成功的提示弹出时,他忽然想起那封始终编译错误的情书。或许,有些心意本就不该用代码表达。就像此刻,不需要复杂的算法,不需要严密的逻辑,只需要一句简单的邀约,像往平静的湖面投颗石子,不管涟漪是大是小,至少要有勇气把石子扔出去。

晨雾里,第一只鸟开始鸣叫。顾以风转身离开机房,脚步比来时轻快了些。指尖残留的键盘温度,和即将到来的三点钟,像两个未被定义的变量,在他心里悄悄等待着被赋值的时刻。

那封编译错误的情书,他没删。就像那些无法被算法解释的心动,虽然 “错误”,却真实存在过。

< 上一章 目录 下一章 >
×
盛夏的风吹过第七级台阶
连载中一只凡槐呀 /