周末的早晨是从少年侦探团的喧闹声开始的。
门铃在九点整准时响起,金研透过二楼的窗户看见步美、光彦和元太挤在门口,每人手里都抱着东西——游戏盒、零食袋,还有一个半人高的纸袋,不知道装了什么。
“金君——我们来啦!”步美仰着头对窗户挥手,笑容灿烂得像是能把晨雾驱散。
金研下楼时,冲矢昴已经开了门,正带着他那副标志性的微笑接待三个孩子。灰原哀坐在客厅沙发上,膝上放着笔记本电脑,头也没抬:“音量控制在七十分贝以下,否则请去院子里玩。”
“知道啦知道啦!”元太第一个冲进来,把怀里的大纸袋放在茶几上,发出沉重的闷响,“看!我把我珍藏的卡牌对战套装带来了!”
那是一套名为《战术纪元》的卡牌游戏。光彦一边拆包装一边热情地介绍规则:“游戏分为资源卡、单位卡和策略卡三种类型,每回合玩家可以执行一次抽卡、一次部署和一次行动。胜利条件有三种:摧毁对方主堡、达成特殊任务目标、或者迫使对方牌库抽空……”
金研坐在轮椅上,安静地听着。他的目光扫过那些印刷精美的卡牌,大脑已经开始自动分析:卡牌总数两百四十张,稀有度分布呈金字塔结构。每张牌有攻击值、防御值、资源消耗、特殊效果四个基础参数。这本质上是一个在限定资源下寻求最优解的组合优化问题。
“听起来很有趣。”他说,语气平和得像在评价一个算法,“我们可以开始了吗?”
第一局,金研对阵步美。
步美抽卡时很认真,眉头微蹙,小声念叨着:“唔……这张医疗兵消耗三点资源,但只能治疗两点伤害……这张侦察兵便宜,但攻击力好低……”
金研的回合。他看了一眼自己的手牌:五张。其中有两张低费单位卡,一张资源加速卡,一张范围攻击卡,一张抽卡引擎卡。他计算了当前资源值(三费)、对方场上的单位(一个防御力二的哨塔)、以及自己牌库剩余卡牌数(四十二张)。
“部署侦察兵。”他放下一张卡,“发动‘情报分析’,额外抽取一张牌。”
新抽到的是一张高费突击单位。金研在脑中快速调整了策略树——原本计划四回合内用低费单位压制,现在可以转向在第五回合爆发。
“结束回合。”
步美歪着头看他:“金君……你都不犹豫一下的吗?”
金研一愣。“犹豫?”
“就是……纠结该出哪张牌呀!”步美比划着,“我每次都要想好久呢!”
“计算最优解不需要犹豫。”金研诚实地说,“根据当前资源、手牌组合、对方场况和牌库剩余分布,出侦察兵并发动抽卡的期望收益最高。”
客厅安静了两秒。
光彦推了推眼镜,眼睛发亮:“金君,你刚才是在做概率计算吗?”
“基础期望值计算。”金研说,“每张牌的价值可以用一个多元函数表示,输入变量包括当前回合数、资源曲线、对手可能的应对策略……”
“等等等等!”元太抱着脑袋,“你们在说什么啊!玩游戏哪要这么复杂!”
灰原哀从笔记本电脑后抬起头,瞥了金研一眼:“他习惯了用效率最大化思维处理一切问题。包括游戏。”
步美眨眨眼,然后笑了:“那金君,我们来换个玩法吧!”
“换什么?”
“不要算那么清楚!”步美把卡牌在手里洗了洗,“就……凭感觉出!比如这张卡,画得可爱,就出这张!或者这张卡的名字好听,就出这张!”
金研的表情出现了一丝裂痕。“……凭感觉?这会导致决策效率下降百分之七十以上。”
“但有趣呀!”步美把一张卡拍在桌上——那是一张攻击力只有一、但卡面画着毛茸茸小动物的单位卡,“出这张!因为它很可爱!”
金研低头看着自己手牌里那张攻击力四、资源消耗合理的标准单位卡,又看了看步美场上一堆“可爱但低效”的单位。他的逻辑中枢在报警:这种打法完全没有胜算。
但他想起了风户医生的话:有时候,“没用”的东西恰恰是最重要的。
他深吸一口气,把那张标准单位卡放回手牌,抽出了另一张——一张资源消耗偏高、特效是“出场时所有友方单位获得‘快乐’状态(无实际效果)”的卡。
“出这张。”他说,“因为……卡面颜色和你的桌布比较配。”
步美愣了一下,然后“噗嗤”笑出声:“对对对!就是这样!”
那局游戏金研毫无悬念地输了。但他的败因不是计算失误,而是一连串“感觉上很合适”但数值上完全不合理的选择。游戏结束时,他的场面上堆满了特效华丽但攻击力低下的单位,像一场混乱的嘉年华。
“金君输啦!”元太宣布,但语气里没有嘲讽,只有兴奋,“不过你后来打得超有意思!我还以为你会一直用那些厉害的牌压着我们打呢!”
金研看着自己满手没打出的高费强力卡,又看了看对手三人脸上纯粹的笑容,某种陌生的感觉在胸口蔓延开来——不是挫败感,而是……更轻盈的东西。
“再来一局?”光彦已经开始洗牌。
“好。”金研说,“这次……我会试试‘混合策略’。”
______
第二局打到一半时,门铃又响了。
这次来的是毛利兰和柯南。兰手里提着一个三层便当盒,柯南则一脸“又被拖来了”的无奈表情。
“听说今天有游戏会,我做了些点心。”兰笑着把便当盒放在餐桌上,“有草莓大福、抹茶铜锣烧,还有金君上次说太甜的曲奇——这次我糖减半了。”
金研操控轮椅来到餐桌旁。便当盒打开,点心的香气和色彩一起涌出来。粉白的草莓大福整齐排列,抹茶铜锣烧的绿色温润如玉,曲奇则是浅浅的金黄色。
“谢谢。”他说,拿起一块减糖曲奇咬了一小口。甜度刚好,黄油的香气更明显了。
柯南凑到牌桌旁看战局:“噢,《战术纪元》啊。你们战况怎么样?”
“金君刚才用‘感觉流’打法输了一局!”光彦兴奋地说,“现在这局他在尝试混合策略!”
柯南挑眉看向金研:“感觉流?”
“……一种非理性决策模式。”金研解释,“基于美学偏好而非效率最大化。”
柯南的嘴角抽动了一下,像是在憋笑。“有意思。那这局呢?”
“当前回合数:七。我方资源:八费。对方场上有两个防御单位,一个攻击单位。我方手牌中有三张可能性。”金研快速分析,“选项一:出高费突击单位强攻,胜率约百分之六十五,但会耗尽资源,下回合失去应变能力。选项二:出中费单位配合策略卡清场,胜率百分之五十,保留三费。选项三:出低费单位拖延,等抽到关键牌,胜率百分之四十,但保留六费。”
他顿了顿。
“按照‘感觉流’逻辑,选项二的卡面插画有流星图案,而今天天气预报说晚间可能有流星雨。所以……我选选项二。”
柯南沉默了三秒,然后推了推眼镜:“你连天气预报都纳入决策参数了?”
“多源数据整合有助于提高预测准确性。”金研平静地说,“虽然在这个语境下,‘准确性’指的是决策的……情感协调度,而非胜率。”
兰在一旁听得笑出声:“金君好像在解一道特别复杂的数学题呢。”
“本质上是的。”金研点头,“只是目标函数从‘获胜’变成了‘体验游戏过程’。”
他打出那张卡。卡面确实画着星空和流星,特效是“对场上所有单位造成两点伤害”。
游戏继续。虽然这次决策依然不是最优解,但金研发现,当他不把注意力完全集中在胜率计算上时,他能注意到更多东西——比如光彦每次抽到稀有卡时眼睛会微微睁大,比如元太在思考时会不自觉地啃拇指,比如步美打出漂亮连击时会小小地“耶”一声。
这些细节,在效率至上的逻辑里是噪声。但现在,它们变成了……数据的一部分。另一种数据。
______
午餐是在客厅地毯上野餐进行的。兰带来的便当盒里除了点心,还有做成卡通形状的饭团、玉子烧、和色彩鲜艳的蔬菜沙拉。少年侦探团吵吵嚷嚷地抢食,金研安静地坐在轮椅上,小口吃着兰特意给他准备的那一份——米饭更软,蔬菜切得更细。
“金君,伤口还疼吗?”兰坐到他旁边,轻声问。
“好多了。”金研说,“灰原说下周可以尝试用左手拿轻物。”
“那太好了。”兰的笑容温暖,“等你再好一点,可以来波洛咖啡厅玩。安室先生做的三明治特别好吃,而且他最近在研究儿童餐的摆盘,说要做得可爱一点。”
金研想象了一下安室透——那个在组织里以神秘和危险著称的波本——围着围裙研究如何把胡萝卜切成小兔子形状的画面。这个想象的荒诞程度让他的嘴角几不可察地向上弯了一下。
“我会期待的。”他说。
柯南端着盘子凑过来,看似随意地问:“金哥哥,你之前说在写天气预报程序,进展怎么样了?”
“基础框架完成了。”金研回答,“目前整合了五个官方数据源,加权算法还需要调整。另外我发现,民间气象爱好者在某些局部地区(比如山区或沿海)的观测数据有时比官方模型更准确,正在考虑是否要增加众包数据接口。”
柯南的眼睛亮了起来:“众包数据的话,验证机制怎么设计?不然容易混入虚假信息。”
“计划用交叉验证和信誉度评分系统。”金研说,“每个数据提供者会有一个初始信誉值,根据历史预测准确率动态调整。另外会加入地理一致性检查——相邻观测点的数据不应该出现突变,除非有合理的气象事件解释。”
“可以用机器学习来优化信誉度算法。”柯南自然地接话,“比如用过去三年的数据训练一个模型,预测某个提供者在特定天气类型下的准确率……”
两人你一言我一语地讨论起来。术语飞溅:数据清洗、特征工程、过拟合、正则化……少年侦探团三人组听得云里雾里,兰则微笑着看两个“孩子”用大人的语气讨论着专业问题。
灰原哀从地下室上来拿试剂时,正好听到这段对话。她停在楼梯口,看着金研说话时微微发亮的眼睛和柯南那副与其年龄不符的专注表情。
“真是够了。”她轻声自语,但语气里没有不耐,只有一丝淡淡的无奈,“两个伪小学生。”
______
午后,游戏会进入自由活动时间。步美拉着金研看她带来的绘本,光彦在调试他新做的“侦探徽章改良版”,元太则缠着冲矢昴问能不能再做一次上次那种超好吃的咖喱。
金研的轮椅停在书架旁,他随手抽出一本书——不是法律或编程,而是一本旧的植物图鉴。书页泛黄,里面用钢笔仔细标注了各种植物的花期、习性和用途。
“这是博士年轻时的兴趣。”灰原哀不知何时走到他身后,“他说植物比人心容易懂——给阳光就生长,缺水就枯萎,没有隐藏的动机。”
金研翻到一页。上面画着一株樱花,标注写着:“染井吉野樱,花期短暂,约一周。盛开时极其绚烂,凋零时干脆利落。像某种决绝的美学。”
“樱花……”金研低声说,“我还没见过。”
“今年花期快结束了。”灰原哀说,“但博士后院有一株晚开的品种,叫‘十月樱’,春秋各开一次。如果恢复得顺利,十月份应该能看到。”
金研看着那幅精细的素描。花瓣的层次,花蕊的细节,连飘落时的弧线都画了出来。
“画得真好。”他说。
“因为投入了时间。”灰原哀说,“博士画这整本图鉴,花了三年。每天观察,记录,修改。没有效率可言,纯粹是因为喜欢。”
金研的手指抚过书页。纸张的触感粗糙而真实。
“喜欢……”他重复这个词,像是在品尝陌生的味道。
“嗯。”灰原哀转身离开,“你可以试试看。找一件‘没有用’但‘不讨厌’的事,花时间去做。不追求结果,只感受过程。”
金研在书架前坐了许久。窗外传来少年侦探团在院子里玩捉迷藏的嬉笑声,混着午后暖风的气息。
他合上图鉴,放回书架。但那个念头留下了。
______
傍晚,客人们陆续离开。兰和柯南走前,兰弯下腰对金研说:“下周我再来,教你做最简单的饭团。就从捏三角形开始,好不好?”
金研点头:“好。”
柯南朝他挥挥手,眼神里有种同龄孩子之间不会有的理解:“天气预报程序写好记得给我看看,说不定我能帮忙找bug。”
“一定。”
房子重新安静下来。冲矢昴在厨房洗碗,水声哗哗。灰原哀回地下室继续实验。阿笠博士还没回来。
金研操控轮椅来到客厅的落地窗前。夕阳西下,天空被染成橘红和淡紫的渐层。对面屋顶那只三花猫还在,正慢条斯理地舔着爪子。
他看了一会儿,然后转身,来到那台笔记本电脑前。
开机,调出天气预报程序的代码。但他没有继续写加权算法模块,而是新建了一个文件。
文件名他犹豫了很久,最终输入:【无用程序_001】
然后他开始写。
这不是一个“有用”的程序。它不做数据分析,不解决任何实际问题,甚至没有明确的输出。它的功能很简单:在屏幕上模拟一朵花的生长。
他从阿笠博士的植物图鉴里提取了基础参数——茎干的生长速度、叶片展开的角度、花瓣生成的规则。然后用代码搭建一个极其简化的生长模型。
写得很慢。他刻意不去追求效率,不去优化算法。有时写完一段,他会停下来,看着窗外发呆几分钟,然后再继续。
代码里有“不完美”的地方——比如花瓣飘落的物理模拟用了最简单的随机函数,导致落点分布不够自然。按照他平时的标准,这种粗糙度是不可接受的。但这次,他保留了。
程序写完时,天已经全黑了。屏幕中央,一朵像素构成的简笔画小花正在缓缓旋转,茎干微微摆动,几片花瓣偶尔飘落。
金研按下了运行键。
小花开始“生长”。从一个小点,慢慢抽出茎,展开叶,长出花苞,然后——花瓣一层层绽放。很慢,整个过程要五分钟。
他就那样静静地看着。没有分析代码效率,没有评估渲染效果。只是看着。
当最后一层花瓣完全展开时,屏幕角落显示出一行小字:【这是一朵花。它没有用。但它存在。】
金研盯着那行字,很长时间没有动。
直到身后传来轻微的脚步声。安室透不知何时回来了,正站在客厅入口处,看着他,也看着屏幕上的花。
“很漂亮。”安室透轻声说。
金研没有回头。“它没有实际功能。”
“所以呢?”安室透走到他身边,也看着屏幕,“不是所有东西都需要有功能。”
小花的花瓣开始一瓣瓣飘落,在屏幕下方堆成一个小小的像素堆。
“我在想……”金研的声音很轻,“如果我父母当年画的不是组织要的分子式,而是……这样的花,会怎么样?”
安室透沉默了片刻。然后他说:“他们大概会被组织惩罚吧。但也许……他们会更快乐一点。”
花瓣落完了。屏幕上只剩下光秃秃的茎干。然后程序重新开始,从一个小点再次生长。
循环往复。
“风户医生说,下周开始,我可以尝试每周外出一次。”金研说,“在有人陪同的情况下,去附近的地方。”
“想去哪里?”
金研想了想。
“书店。”他说,“我想找一本……教人画画的书。不需要画得好,只需要教怎么开始的那种。”
安室透的嘴角微微上扬。“好。我带你去。”
屏幕上的小花又一次绽放了。这次,金研注意到,他写代码时无意中加了一个小bug——每循环三次,会有一片花瓣变成浅蓝色,而不是预设的粉色。
他没有去修复。
就让那个bug留着吧。他想。
窗外的夜色越来越深。但房子里有光,屏幕上有花,身边有人。
这就够了。
至少今晚,够了。