许望追出来的时候,林夕刚把空水瓶扔进体育馆门口的回收筐里。
“下周三下午别排课。”他扶着眼镜框,气还没喘匀,文件夹被他夹在胳膊底下,纸边露出一截,被风吹得哗哗响,“赛前碰一次,战术布置。”
苏瑾回过头看了他一眼,狐耳朵向后转了半寸。她的尾巴还保持着微微翘起的弧度,尾尖在林夕的小腿上不经意地扫过一下。“你说报就报,说碰就碰,”她说,语气不算冷,但每个字都咬得很清楚,“下次先问。”
许望举起一只手,掌心朝外,做了个投降的姿势。“下次问。”他说完转身就走,走了三步又回头,“周三下午,别忘了。”
林夕看着他消失在体育馆侧门的拐角处,猫耳朵转了半圈,把风里传来的脚步声筛掉。尾巴已经不抖了,但尾根还留着一点酸麻的余韵,像是被什么东西轻轻扯住又松开。苏瑾伸出手,把她后脑勺上一撮被风吹乱的头发按平。
“先去图书馆,”苏瑾说,“我把之前借的几本判例还了。你顺便查查多人赛的赛制——许望那张纸上只写了名字,规则一个字没提。”
两人穿过操场边的梧桐道,树叶在头顶上哗啦啦地翻着灰绿色的浪。操场东侧有人在跑圈,韩智雅的犬耳从跑道那头一闪而过,身后跟着三个气喘吁吁的男生。林夕没叫她,尾巴却自动翘高了一点,苏瑾看在眼里,没说。
图书馆三楼的隔音卡座区在工作日的下午没什么人。天花板上的吸音板把脚步声吃掉大半,空气里有股旧书和木质家具混在一起的味道。苏瑾熟门熟路地推开一扇标着“静音区”的门,挑了个靠窗的双人卡座,把风衣脱下来搭在椅背上。包臀裙坐下去的时候绷紧了一瞬,她的狐尾从椅背的缺口处垂下去,蓬松的金红色尾毛落在深灰色的地毯上。
林夕在对面坐下,打开笔记本。屏幕亮起来,她先登上教务系统看了看课表,周三下午那栏是空的。然后她退出来,打开搜索引擎,敲了“兽化特征技巧竞技赛 多人配合 赛制”几个词。搜索结果第一条就是学校体育部去年发的赛制手册PDF,她点开,翻到多人配合那一章。
苏瑾从书架上抽了本厚得能当砖头的《民事判例集释》,摊在桌上翻了几下,其实是旧的借阅记录要清掉。她的目光越过书本上缘,落在林夕皱起的眉头上。
“写什么?”林夕盯着屏幕,猫耳朵往两边压平了半分,“同时下场、轮换节奏、禁止单人包揽全部高潮——这什么意思?”
“就是不许你一个人把活全干了。”苏瑾合上书,伸手把屏幕转过来一点。她的指尖在“轮换节奏”四个字上点了一下,“四个人轮流带节奏,每个人至少完成一次有效射精。最后还要评判配合默契度,裁判会看尾巴有没有互相干扰、有没有踩错时间点。”
林夕的尾巴在椅子边上甩了一下。她翻到下一页,上面画着一张战术轮换示意图,四个人围成菱形,箭头绕了一圈又一圈。她正想说什么,耳朵突然往前竖了起来。
隔壁卡座传来键盘声。
不是那种零碎的、打几个字停一停的节奏。是连贯的、急促的、像雨水打在铁皮棚顶上一样的键盘声,中间几乎没有停顿。林夕听了几秒,忍不住从卡座的隔板边上探出头去。
隔壁卡座里坐着一个戴细框眼镜的男生。他面前摊着一台十五寸笔记本电脑,屏幕被分成三个窗口——一个终端机在跑日志,一个编辑器里密密麻麻全是代码,最右边的窗口反复弹出一模一样的红色报错信息。男生盯着那行红字,右手食指在回车键上敲了三下,每一次都弹回同样的结果。他没叹气,没抓头发,只是把眼镜往鼻梁上推了一下,然后双手悬在键盘上方,像在脑子里重新排布什么东西。
林夕不认识他。他穿的是一件洗得领口有点松的深灰色T恤,袖子卷到肘弯,前臂上没有任何兽化特征——没有鳞片,没有毛,没有尾巴从椅子后面垂下来。就是个普通男性。
她的尾巴尖在隔板边上探出去一小截,纯黑的毛尖在空气里弯了一下。男生没看见。
“那行红字写了什么?”林夕问。
男生抬起头。他看她的脸,看她的耳朵,看她的尾巴,然后看回屏幕,全程表情没有变化。不是冷淡,是那种“看到了、确认了、继续手头的事”的表情。
“段错误。”他说,声音不高,带了点长时间没喝水之后的沙哑,“指针指到不该指的地方。”
林夕从卡座里站起来,走到他身后。屏幕上的代码是C语言,她认得语法,但没写过这种规模的程序。终端机又弹出一行新的报错,这次多了一串内存地址。
“你把指针声明成了全局变量,但赋值的时候用的是局部作用域。”她指着编辑器里的一行代码,手指没碰到屏幕,“编译能过,一跑就炸。”
男生转过头看她。他的镜片后面有一层很淡的反光,把眼睛的颜色盖住了大半。他看了她大概两秒钟,然后把眼镜摘下来,用T恤下摆擦了擦,重新戴上。
“你学过?”
“高中社团里玩过半年。”林夕说,“后来兽征出来了,就把社团退了。”
男生点了点头,转过身,光标移到她指的那一行,删掉了三个字符,又敲了两个。保存、编译、运行——终端机吐出一串绿色的成功日志。他把椅子往后靠了靠,椅背发出一声轻微的吱嘎响。
“程宇,”他说,“计算机系研二。”
“林夕。”
“我知道你是谁。”程宇把眼镜往上推,指尖碰到镜框边缘的时候停了一下,“今天体育馆破纪录的那个,全校广播都报了。纯黑猫系,单人项目八分三十秒。”他说这些的时候语气和刚才分析段错误一模一样,像是在念一份系统日志,“但你刚说的那个作用域问题——你是真懂,不是凑巧说对。”
林夕的尾巴在身后翘了起来。不是因为被认出来,而是因为他说话的时候视线一直停留在代码上,没有往她的耳朵和尾巴上多扫一眼。不是刻意避开,是根本不在乎。
苏瑾在隔壁卡座听完了全程。她把《民事判例集释》放回书架,拿起赛制手册翻到多人配合那一页,用手机拍了两张照片。然后把风衣从椅背上拿起来,搭在手臂上,走到林夕的卡座边。
“我去楼下还书,”她说,把手机屏幕亮给林夕看,上面是刚拍的赛制条文,“规则我都拍下来了,回去慢慢看。你——”她的目光在程宇的终端机屏幕上停了一瞬,然后落回林夕脸上,“十一点前回宿舍。”
林夕的耳朵动了一下。她听出苏瑾语气里那个短暂得几乎不存在的停顿——不是不放心,是在考虑要不要不放心,然后决定不。
“好。”林夕说。
苏瑾的狐尾从她手背上扫过,尾尖勾了一下她的小指,然后转身往楼梯口走。高跟鞋踩在吸音地毯上没有声音,只有那条蓬松的赤金色尾巴在走道尽头一晃,拐弯不见。
程宇全程没看苏瑾。他把终端机窗口最小化,打开一个干净的编译器,敲了几行测试代码。林夕认得那个结构——是内存分配的练习,大一计科系期末考的经典题型,但他在代码里故意埋了一个坑,分配了内存不释放,循环一千次就会把堆栈吃光。
“你故意的?”她问。
“测试用。”程宇把键盘往她那边推了半寸,“试试看,能不能在不删掉分配命令的前提下,把内存泄漏堵上。”
林夕在他旁边的椅子上坐下。卡座的椅子是那种带扶手的办公椅,坐下的时候扶手正好挡住她的尾巴,她下意识地把尾巴抽出来,绕过扶手,搭在自己膝盖上。程宇看了一眼那条尾巴——纯黑的毛贴在深灰色的校服裙上,尾尖微微弯曲——然后目光回到屏幕。
“尾巴这样压着不难受?”他问。
“还好。”
“猫系尾根是敏感带,”他说,语气还是那种读日志的调子,“长时间压迫会影响血供。宿舍楼的兽征养护手册第三章第四页有写。”
林夕愣了一下。她看过那本手册,第三章确实是讲尾巴日常护理的,但她没记住页码。
“你看过?”
“刚入学的时候帮计算机系做过一个兽征数据管理系统的前端,”程宇说,手指在键盘上敲了几下,屏幕弹出编译进度条,“甲方给了几十本手册当参考材料,全看了。”
编译完成。他敲了个运行命令,终端机开始疯狂报错——内存占用曲线在另一个窗口里往上蹿,像一条被踩了尾巴的蛇。林夕盯着那条曲线看了三秒,然后把手伸向键盘。
“借我用一下。”
程宇把键盘推过来。她的手指落在键帽上,指甲剪得很短,敲击的声音比他轻,节奏更碎——她不是一口气写完,而是打几个字停一下,耳朵转一转,再接着打。他在旁边看着,发现她的耳朵每次往前转的时候,接下来的代码一定是对的;如果耳朵往后压,那行大概率要删掉重写。
她用了两个嵌套循环,在分配命令后面插入了一个判断条件。当循环次数达到预设阈值时,自动释放前一百次分配的内存,然后重置计数器。逻辑不复杂,但很巧妙——像是用猫爪子把掉在地上的线团勾起来,绕一个圈,再塞回篮子。
代码编译通过。运行三十秒,内存曲线在某个值上被按住,不再往上走。程宇看着那条平稳下来的曲线,沉默了几秒。
“你这半年退社之后,自己练过?”
“黑过学校官网的后台。”林夕说,尾巴在膝盖上弯了一下,“没改东西,就看看。”
程宇笑了。这是他第一次笑,很短,嘴角动了一下就收回来,但眼镜后面的眼睛弯了一个弧度。“官网上次被黑是两年前,教务系统被挂了个猫头猫爪的图标,查了三天没查出来是谁干的。信息中心那帮人到现在还拿这事当反面教材。”
林夕的尾巴僵了一秒。她把脸转向屏幕,耳朵往前竖得笔直,像是锁定了什么目标。
“我说的是”她停了停,“只是看看。”
程宇没追问。他把终端机关掉,打开一个新的虚拟机,敲了一串命令,屏幕上跳出一个登陆界面。他从口袋里掏出一张便签纸,写了用户名和密码,贴在林夕的笔记本边缘。
“服务器的终端账号,”他说,“上面挂了编译环境和三个测试数据集。你想练手的话随时登,别把主进程搞崩就行。”
林夕看着那张便签,上面用铅笔写的字很小,笔划很整齐,像是经常写代码的人习惯的力度——轻而准。她的尾巴从膝盖上滑下去,尾尖碰到了椅子的金属脚,发出一声极轻微的响。
“为什么给我?”她问。
程宇把笔记本合上,装进电脑包。拉链拉到头的时候停了手,抬头看她。他的镜片上反射着屏幕待机画面的蓝光,把眼睛的位置映成两块淡淡的光斑。
“你这半年没人跟你正经聊过程式吧?”他说,“我看你刚才盯那行报错的眼神——跟我在实验室通宵盯屏幕的眼神一模一样。”
他把电脑包甩到肩上,站起来。走过她身边的时候,停了一秒。
“账号是长期的,密码自己改。”
脚步声被吸音板吃掉。卡座区重新安静下来,只剩下空调送风的低鸣和林夕笔记本风扇转动的嗡嗡声。她低下头,看着那张便签纸上铅笔字被灯光照得泛出一点银色反光,然后伸出手,指尖悬在键盘上方。
便签上的用户名是“linxi_temp”,密码那行写了八个字符,最后一个是下划线。
她把光标移到登陆界面的密码输入框里,敲了七个字符。指尖落在第八个字符的位置上,没有按下去。
猫耳朵先往前竖了起来。
两只耳朵同时转前,耳廓微微张开,耳尖向前,像在空气中捕捉一个还没响起的信号。尾巴从椅子脚边上翘起来,纯黑的尾毛在屏幕冷光里泛出一层极淡的蓝。