编程代码之战:第4章 字符串与凶手

哔咔漫画
‹ 返回

第4章 字符串与凶手

下一刻,杨成出现在了一个椭圆形的办公室中。

他西装笔挺,打着潇洒的领带,像极了某行业的成功人士或精英。

不过,墙壁上挂着的一幅米字国旗表明了他现在所处的地理位置,他是以“约翰牛”的身份出现的。

打量着四周,杨成发现了很多书籍和档案文件。

我扮演的这厮到底是干嘛的?

不过,这疑问并不妨碍杨成第一时间发现办公桌上的一台台式电脑。

他就如同发现了外星人一般惊喜。

“让我看看里面究竟有些什么好东西?”

杨成打开电脑,期望能从里面找到例如小电影般的东东。

桌面上排列着很多花花绿绿的图标。

杨成甚至还发现了一款大型的单机游戏——“XX召唤”。

“真是酷毙了!”

他满怀期待地双击图标,期望着在里面大杀四方。

毕竟完成任务是其次的,享受生活才是NumberOne。

令人失望的是,电脑毫无反应。

就如同死机了一般陷入沉寂...

“欧!我早该想到!”

杨成以手掩面。

这关卡中的虚拟物品,不重要的部分当然不会做得太真实,把宝贵的资源浪费在无关紧要的末节上,这是任何一个游戏运营所无法忍受的。

就在这时,办公室的门被敲响了,听起来有些急切。

“请进”,杨成一听就知道任务来了。

门被推开,走进来一位身穿警官制服的中年肥胖男子,他的眼神中充满了敬意。

“你好,我是苏格兰场的警官麦克阿瑟。”

“我们很早就听闻您在信息学方面的非凡造诣,恳请您协助我们调查一起案件”。

警官麦克阿瑟开门见山地说道。

“喔,愿闻其详”。

杨成很爽快地答应了。

听起来事情有些猎奇。

“事情是这样的”。

“有一位关键的目击证人被谋杀了,他在临死前想说出凶手的姓名,但声音很微弱又断断续续的,难以分辨。”

“我们获取了他的录音,希望能在您这里得到帮助,看怎么找出凶手”。

杨成表现出一副饶有兴趣的模样。

“嗯,你们可有嫌疑人名单?”

“有的,我们把行凶者锁定在了四个人之中,但又不确定到底哪个人才是真凶”。

麦克阿瑟递过来一份文件,上面有四个英文名字:

Bernard Deltheil

Peter Gone

Peter Reeves

Roland Scorsini

“能先听听这段录音吗?”

杨成提出了要求。

光凭几个英文姓名,恐怕大侦探福尔摩斯也查不出个所以然来。

麦克阿瑟掏出一支录音笔,摁下上面的按钮。

一个细若游丝的声音传了出来。

“p~t~g”。

这声音真是让人毛骨悚然,犹如地狱之声。

证人在最后时刻说了五个字母,其中还有2个字母无法分辨。

杨成当然不认为字符串的长度就意味着名字的长度,因为他有可能在说出凶手完整名字前就咽气了。

“好的,请稍等”。

杨成几乎可以肯定是哪个人,但因为游戏任务规则,他不能直接说出答案,而是得用程序员的方式来解决——敲代码。

他在电脑上打开一个编辑器,建立了一段脚本,然后开始编写代码。

对于任何的字符串匹配,是傻乎乎地用逻辑+循环,还是用强大而且简洁的正则表达式,我想大部分程序员都会倾向于后者。

杨成对于这个问题很有自信,一小段正则验证便足矣。

正则表达式的性能可能会略低,但它的确很方便啊。

对于这个凶手名称匹配来讲,它是不区分大小写的,所以得加“i”参数,以表示大小写不敏感。

(insensitive)

杨成很轻易地完成了这次匹配,甚至用了不到100个字符,假如去掉空格、括号和分号,代码甚至会更短。

正则就是爽!

然而,值得注意的地方,因为正则表达式趋向于极致的简洁,它的所有部分都被紧密地排列在一起。

在早期的JavaScript中,不支持正则的注释与分段,所以很长的表达式很容易让人费解,增加阅读困难。

对待比较复杂的业务逻辑,最好是拆分成几个短正则,分别验证,这样维护和调试起来就更方便。

他深吸一口气,将代码和运行结果保存好。

“警官,我想我已经找出凶手了”。

杨成脸上带着神秘的微笑。

“哦?是嘛!快讲给我听听!”

麦克阿瑟按捺不住地想赶快知道结果。

杨成拿出一支签字笔,在嫌犯名单的第二个“Peter Gone”上面划了个圈圈,然后递给他。

“噢,真是太感谢您了!”

麦克阿瑟伸出手,紧紧地握了握杨成的手。

话说完,警官腆着个大肚子,晃悠悠地挥手告别。

看着麦克阿瑟走出门外,杨成后仰在皮沙发上,舒服地把双手交叉放在后脑勺。

“叮!”

系统声音及时地响起来。

“恭喜玩家您完成了找出凶手的任务!”

“先前积分17分”。

“使用正则表达式匹配字符串奖励2分”。

“代码量在100个字符以内奖励1分”。

“当前积分20分,击败了全球13%的玩家”。

“不错”,杨成拍了拍手。

这个积分系统还考虑到了代码量问题,可以说是比较完善。

“您要继续下面的挑战嘛?”

“不不不”,杨成摆摆手。

“让我先在这舒适的办公室和皮沙发上,享受一段快乐的午休时间”。

“有什么需要帮忙的嘛?”

这系统则展现出了人性化的一面。

“首先,你看我这身装扮,肯定不适合午睡”。

杨成努努嘴。

“给我来一身睡觉三件套,睡衣,睡裤,还有睡帽”。

“我还需要一个超大的豪华型,欧式风格大床”。

“恒温的中央空调”。

“一个睡觉醒来可以随时看到加勒比海风景的海景房间”。

“嗯,就这些了”。

“亲爱的系统,你能办到嘛?”

杨成表示怀疑。

“能”,系统肯定地说道。

“不过我得先读取一些配置文件,这得花上点时间”。

“很好!去吧,我的皮卡丘!”

杨成决定了以后不叫“系统”了,还是“皮卡丘”这个词儿比较带劲。

大概过了半分钟,杨成感觉自己身形一震,很快发生了空间移动。

温暖的海风吹拂在他的脸上。

这里四季如春,拥有他刚才所想要的一切。

穿着睡衣、睡帽、睡裤,他傻呆呆地看着窗外的风光。

“我亏大了”,杨成却有些沮丧。

“我应该还要求选50个加勒比的绝色佳丽来服侍我的”。

“喂,皮卡丘,能帮我搞到手嘛?”

系统那边却是毫无反应,似乎厌倦了杨成的贪得无厌。

“喂,皮卡丘?系统?”

杨成不死心。

“好吧”。

杨成两手一摊,表示放弃。

然后,他两眼一闭,倒在了豪华大床上。

在游戏里面,时间会过得非常快,尤其是当你处于挂机、休眠或者娱乐状态的时候。

有可能在游戏中呼呼大睡了8个小时,而外面的世界才过去几十分钟。

(zzz...)

哔咔漫画