第9章 不关门的店 (第2/2页)
他低头看手机。刚才拍的那张A4纸照片还在,但照片上的第三条规则变了。
取件码错误,每错一次,扣除一件您最重要的物品。
“……我们的记忆。”沈夜盯着屏幕,“规则扣的是我们的记忆。我刚才输入38376,它扣走了我‘想起取件码是数字’这个认知。所以我现在脑子里,只剩下‘取件码以门字开头’,38376这个思路,正在从我脑子里消失。”
他试着回忆38376是怎么来的。奇怪,他刚才明明推算过,现在却只剩下“取件码以门字开头”这一条。中间的推导过程,像被人用橡皮擦掉了。
“这是bug。”零号说,“它没有扣‘最重要的物品’,它扣的是‘相关信息’。”
“对。”沈夜说,“它读取了我的记忆,把‘和取件码有关的那部分’当成‘物品’扣走了。我越想越少,就越记不起取件码。这是个死循环,我每错一次,就更接近‘永远想不起来’。”
林小雪问:“那怎么办?”
沈夜盯着键盘,没有动。三秒后,他重新伸手,输入了 95E8。
屏幕跳了一下,还是红色:取件码错误。第二次。
这一次,惩罚来得很快。
零号忽然从沈夜肩头跌下来,在半空稳住身形,声音发颤:“我的代码……少了一段。”她摊开手,绿色的代码流里有一小截明显断掉了,“我丢失了一个函数。我记得我明明会……它叫什么来着?”
林小雪也低头翻了翻随身带的本子:“我的泪痣记录……少了一页。我记得我记了七天的记录,可现在只剩六天。”
“看吧。”沈夜说,“它开始扣别的东西了。第一次扣了我的推理过程,第二次扣了零号的函数、林小雪的一天记录,它扣的‘物品’,是我们每个人的一部分记忆。再错下去,我们三个会一起变成什么都不记得的人。”
他盯着屏幕上那行“请输入取件码:”,忽然说了一句让两人都没听懂的话:“这个规则,写得像个计时炸弹。”
“什么意思?”
“规则说‘每错一次,扣除一件最重要的物品’,它没有说会扣几次,也没有给错误次数的上限。”沈夜说,“正常的取件系统,三次错误就该锁死。它不给上限,就是要让我们一直试下去,试到把我们自己都赔进去。这不是取件码验证,这是一个吃记忆的陷阱。”
“那我们不试了?”
“不试也不行。”沈夜说,“第二条规则写了:本店只接待取件人。我们是取件人,就必须取件。不取,可能永远出不了这扇门。”
他停了一下,目光重新落回门边那张A4纸:“除非,我们能找到一条不用取件码也能取件的路径。”
“……有这种路径?”
沈夜没有立刻回答。他在心里,把那五条规则又过了一遍。第一条,没有时间。第二条,只接待取件人。第三条,取件码以“门”字开头。第四条,不许提问。第五条,三十秒内离开。
五条规则,像五段被注释掉的代码。他总觉得里面藏着一个逻辑漏洞,一个能让他在不触发惩罚的前提下,把“取件”这个流程走完的漏洞。
然后,他的目光停在第四条上。
店内请勿向店员提问。
不能提问。但第三条说的是“取件请先输入取件码”,输入取件码,从来不是提问。规则的措辞区分了“提问”和“输入”两种行为,这本身就说明:允许输入,禁止提问。也就是说,他唯一的出路,就是“输入”。
取件码。以“门”字开头。
沈夜忽然想起door.py里那行注释:if(you_are_ok()){**ile();}。
那行注释,是老周模仿他的习惯写的。老周会把取件码设成一个他猜不出来的数字吗?不会。老周是个会替他把“门”修好、然后在注释里写if(you_are_ok()){**ile();}的人,他会把取件码,设成只有沈夜才“认得”的东西。
一个沈夜忘了自己会输、但手指还记得怎么输的东西。
他重新在键盘前坐下,这一次,没有看屏幕。他的手指悬在键盘上方,停了两秒,然后自己动了起来,像一段被反复执行过无数次的肌肉记忆:
他输入了一行代码:
if(you_are_ok()){**ile();}
屏幕安静了一秒。
然后,那行“请输入取件码:”消失了。
取而代之的,是一行绿色的字:
取件人确认。门已打开。
柜台后面的老头,慢慢放下了报纸。他的脸上没有任何表情,只是把那副老花镜摘下来,用衣角擦了擦,又戴回去。
“找到了就好。”他说,“找到了就好。”
“……什么找到了?”沈夜问。
老头没回答。他指了指柜台后面,那台旧电脑旁边的墙。
墙上挂着一把钥匙。钥匙上贴着一张标签,标签上的字迹,和door.py里那行注释一模一样:
“地下室。你的东西,一直在那儿。”
沈夜伸手去拿钥匙。
他的指尖碰到钥匙的瞬间,柜台上的旧电脑,屏幕忽然又亮了。光标自己动起来,在那行“请输入取件码:”下面,打出一行新的字:
“密码对了。但门,不止一扇。”
“欢迎回来,作者。”
店外,卷帘门无声地落了下来。
三十秒,到了。