首頁 短篇

編程代碼之戰(zhàn)

第四章 字符串與兇手

編程代碼之戰(zhàn) 程序小猿 2155 2020-02-27 14:13:22

  下一刻,楊成出現(xiàn)在了一個(gè)橢圓形的辦公室中。

  他西裝筆挺,打著瀟灑的領(lǐng)帶,像極了某行業(yè)的成功人士或精英。

  不過,墻壁上掛著的一幅米字國旗表明了他現(xiàn)在所處的地理位置,他是以“約翰?!钡纳矸莩霈F(xiàn)的。

  打量著四周,楊成發(fā)現(xiàn)了很多書籍和檔案文件。

  我扮演的這廝到底是干嘛的?

  不過,這疑問并不妨礙楊成第一時(shí)間發(fā)現(xiàn)辦公桌上的一臺(tái)臺(tái)式電腦。

  他就如同發(fā)現(xiàn)了外星人一般驚喜。

  “讓我看看里面究竟有些什么好東西?”

  楊成打開電腦,期望能從里面找到例如小電影般的東東。

  桌面上排列著很多花花綠綠的圖標(biāo)。

  楊成甚至還發(fā)現(xiàn)了一款大型的單機(jī)游戲——“XX召喚”。

  “真是酷斃了!”

  他滿懷期待地雙擊圖標(biāo),期望著在里面大殺四方。

  畢竟完成任務(wù)是其次的,享受生活才是NumberOne。

  令人失望的是,電腦毫無反應(yīng)。

  就如同死機(jī)了一般陷入沉寂...

  “歐!我早該想到!”

  楊成以手掩面。

  這關(guān)卡中的虛擬物品,不重要的部分當(dāng)然不會(huì)做得太真實(shí),把寶貴的資源浪費(fèi)在無關(guān)緊要的末節(jié)上,這是任何一個(gè)游戲運(yùn)營所無法忍受的。

  就在這時(shí),辦公室的門被敲響了,聽起來有些急切。

  “請(qǐng)進(jìn)”,楊成一聽就知道任務(wù)來了。

  門被推開,走進(jìn)來一位身穿警官制服的中年肥胖男子,他的眼神中充滿了敬意。

  “你好,我是蘇格蘭場(chǎng)的警官麥克阿瑟。”

  “我們很早就聽聞您在信息學(xué)方面的非凡造詣,懇請(qǐng)您協(xié)助我們調(diào)查一起案件”。

  警官麥克阿瑟開門見山地說道。

  “喔,愿聞其詳”。

  楊成很爽快地答應(yīng)了。

  聽起來事情有些獵奇。

  “事情是這樣的”。

  “有一位關(guān)鍵的目擊證人被謀殺了,他在臨死前想說出兇手的姓名,但聲音很微弱又?jǐn)鄶嗬m(xù)續(xù)的,難以分辨?!?p>  “我們獲取了他的錄音,希望能在您這里得到幫助,看怎么找出兇手”。

  楊成表現(xiàn)出一副饒有興趣的模樣。

  “嗯,你們可有嫌疑人名單?”

  “有的,我們把行兇者鎖定在了四個(gè)人之中,但又不確定到底哪個(gè)人才是真兇”。

  麥克阿瑟遞過來一份文件,上面有四個(gè)英文名字:

  Bernard Deltheil

  Peter Gone

  Peter Reeves

  Roland Scorsini

  “能先聽聽這段錄音嗎?”

  楊成提出了要求。

  光憑幾個(gè)英文姓名,恐怕大偵探福爾摩斯也查不出個(gè)所以然來。

  麥克阿瑟掏出一支錄音筆,摁下上面的按鈕。

  一個(gè)細(xì)若游絲的聲音傳了出來。

  “p~t~g”。

  這聲音真是讓人毛骨悚然,猶如地獄之聲。

  證人在最后時(shí)刻說了五個(gè)字母,其中還有2個(gè)字母無法分辨。

  楊成當(dāng)然不認(rèn)為字符串的長度就意味著名字的長度,因?yàn)樗锌赡茉谡f出兇手完整名字前就咽氣了。

  “好的,請(qǐng)稍等”。

  楊成幾乎可以肯定是哪個(gè)人,但因?yàn)橛螒蛉蝿?wù)規(guī)則,他不能直接說出答案,而是得用程序員的方式來解決——敲代碼。

  他在電腦上打開一個(gè)編輯器,建立了一段腳本,然后開始編寫代碼。

  對(duì)于任何的字符串匹配,是傻乎乎地用邏輯+循環(huán),還是用強(qiáng)大而且簡潔的正則表達(dá)式,我想大部分程序員都會(huì)傾向于后者。

  楊成對(duì)于這個(gè)問題很有自信,一小段正則驗(yàn)證便足矣。

  正則表達(dá)式的性能可能會(huì)略低,但它的確很方便啊。

  對(duì)于這個(gè)兇手名稱匹配來講,它是不區(qū)分大小寫的,所以得加“i”參數(shù),以表示大小寫不敏感。

 ?。╥nsensitive)

  楊成很輕易地完成了這次匹配,甚至用了不到100個(gè)字符,假如去掉空格、括號(hào)和分號(hào),代碼甚至?xí)獭?p>  正則就是爽!

  然而,值得注意的地方,因?yàn)檎齽t表達(dá)式趨向于極致的簡潔,它的所有部分都被緊密地排列在一起。

  在早期的JavaScript中,不支持正則的注釋與分段,所以很長的表達(dá)式很容易讓人費(fèi)解,增加閱讀困難。

  對(duì)待比較復(fù)雜的業(yè)務(wù)邏輯,最好是拆分成幾個(gè)短正則,分別驗(yàn)證,這樣維護(hù)和調(diào)試起來就更方便。

  他深吸一口氣,將代碼和運(yùn)行結(jié)果保存好。

  “警官,我想我已經(jīng)找出兇手了”。

  楊成臉上帶著神秘的微笑。

  “哦?是嘛!快講給我聽聽!”

  麥克阿瑟按捺不住地想趕快知道結(jié)果。

  楊成拿出一支簽字筆,在嫌犯名單的第二個(gè)“Peter Gone”上面劃了個(gè)圈圈,然后遞給他。

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

  麥克阿瑟伸出手,緊緊地握了握楊成的手。

  話說完,警官腆著個(gè)大肚子,晃悠悠地?fù)]手告別。

  看著麥克阿瑟走出門外,楊成后仰在皮沙發(fā)上,舒服地把雙手交叉放在后腦勺。

  “叮!”

  系統(tǒng)聲音及時(shí)地響起來。

  “恭喜玩家您完成了找出兇手的任務(wù)!”

  “先前積分17分”。

  “使用正則表達(dá)式匹配字符串獎(jiǎng)勵(lì)2分”。

  “代碼量在100個(gè)字符以內(nèi)獎(jiǎng)勵(lì)1分”。

  “當(dāng)前積分20分,擊敗了全球13%的玩家”。

  “不錯(cuò)”,楊成拍了拍手。

  這個(gè)積分系統(tǒng)還考慮到了代碼量問題,可以說是比較完善。

  “您要繼續(xù)下面的挑戰(zhàn)嘛?”

  “不不不”,楊成擺擺手。

  “讓我先在這舒適的辦公室和皮沙發(fā)上,享受一段快樂的午休時(shí)間”。

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

  這系統(tǒng)則展現(xiàn)出了人性化的一面。

  “首先,你看我這身裝扮,肯定不適合午睡”。

  楊成努努嘴。

  “給我來一身睡覺三件套,睡衣,睡褲,還有睡帽”。

  “我還需要一個(gè)超大的豪華型,歐式風(fēng)格大床”。

  “恒溫的中央空調(diào)”。

  “一個(gè)睡覺醒來可以隨時(shí)看到加勒比海風(fēng)景的海景房間”。

  “嗯,就這些了”。

  “親愛的系統(tǒng),你能辦到嘛?”

  楊成表示懷疑。

  “能”,系統(tǒng)肯定地說道。

  “不過我得先讀取一些配置文件,這得花上點(diǎn)時(shí)間”。

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

  楊成決定了以后不叫“系統(tǒng)”了,還是“皮卡丘”這個(gè)詞兒比較帶勁。

  大概過了半分鐘,楊成感覺自己身形一震,很快發(fā)生了空間移動(dòng)。

  溫暖的海風(fēng)吹拂在他的臉上。

  這里四季如春,擁有他剛才所想要的一切。

  穿著睡衣、睡帽、睡褲,他傻呆呆地看著窗外的風(fēng)光。

  “我虧大了”,楊成卻有些沮喪。

  “我應(yīng)該還要求選50個(gè)加勒比的絕色佳麗來服侍我的”。

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

  系統(tǒng)那邊卻是毫無反應(yīng),似乎厭倦了楊成的貪得無厭。

  “喂,皮卡丘?系統(tǒng)?”

  楊成不死心。

  “好吧”。

  楊成兩手一攤,表示放棄。

  然后,他兩眼一閉,倒在了豪華大床上。

  在游戲里面,時(shí)間會(huì)過得非常快,尤其是當(dāng)你處于掛機(jī)、休眠或者娛樂狀態(tài)的時(shí)候。

  有可能在游戲中呼呼大睡了8個(gè)小時(shí),而外面的世界才過去幾十分鐘。

 ?。▃zz...)

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁
返回書頁
指南