這次是在晚上,在我們曾經定情的教學樓天台。
我收到他卑微的簡訊:「思思,我在天台等你,我們第一次交心的地方。求你,再給我最後一次機會。」
周晴勸我別去,但我知道,有些事,必須當面了斷。
我到的時候,他正背對著我,身影蕭索。
聽到腳步聲,他猛地轉身,通紅的眼睛裡滿是血絲。
然後,「噗通」一聲,他直直地跪了下來。
「思思!」
他膝行幾步,想來拉我的褲腳,被我躲開。
「我錯了!我真的錯了!」
「我不該刪你,不該讓我媽給你打電話!我混蛋!我不是人!」
他左右開弓,狠狠地扇了自己兩個耳光,聲音響亮。
「都是我的錯,我被豬油蒙了心!」
「我媽和我妹都是農村婦女,沒見識,她們逼我的!」
「我壓力太大了!但我發誓,我心裡只有你一個!」
「我們重新開始,好不好?」
我靜靜地看著他,看著這個男人此刻像個小丑一樣的表演。
「許宴,」我開口,聲音平靜,「你壓力大,就可以把壓力轉嫁給我嗎?」
「你家人逼你,你就可以心安理得地算計我的錢嗎?」
「我……」他語塞。
「你是不是覺得,只要你跪下,扇自己耳光,說幾句軟話,我就會心軟,然後繼續當你的提款機?」
我一步步走近他,居高臨下地看著他。
「你不是被豬油蒙了心,你只是覺得,哄我的成本,比你自己努力賺錢的成本低,對嗎?」
他臉上的悔恨凝固了,嘴唇動了動,卻沒說出話來。
我蹲下身,與他平視,一字一句道:「你演完了嗎?」
「演完了就起來吧。」
「別髒了我們第一次交心的地方。」
說完,我站起身,轉身離去,再沒有回頭。
身後,傳來他壓抑的、氣急敗壞的嘶吼。
4
徹底的決裂之後,我把許宴的所有聯繫方式都拉黑了。
一天下午,我剛從圖書館出來,就被許宴堵在了必經的小路上。
他看起來比上次更憔悴,眼下泛著青黑,但眼神卻透著一股瘋狂。
「思思,我們談談。」
「我們沒什麼好談的。」
我拉著周晴想繞開他。
他卻一步橫在我面前,目光掃過我身後不遠處正走過來的一道身影,忽然提高了音量。
「我知道你還在生我的氣,但我真的是愛你的!我只是壓力太大了!思思,你再給我一次機會,就一次!」
我皺眉,順著他的視線回頭,果然看到了陸澤。
陸澤正和幾個同學邊走邊聊,注意到這邊的拉扯,腳步慢了下來。
許宴伸手想來抓我的胳膊,被我側身躲開。
「程思!你是不是因為陸澤才跟我分手的?!」他突然歇斯底里地吼道。
「我就知道!你轉專業之後,眼睛就一直盯著他!你是不是覺得我這個窮小子配不上你了?!」
周晴氣得衝上去:「許宴你放什麼狗屁!分手是你自己作的,關別人什麼事!」
「不關他的事?」許宴冷笑,目光死死盯著已經走到近前的陸澤。
「陸大學長,挖牆腳的感覺很爽吧?」
「我女朋友當初轉專業,還是我一點點輔導的,現在翅膀硬了,就想飛到你那棵高枝上去了?」
我氣得渾身發抖,正要開口,陸澤卻先一步走到了我身邊。
他沒有看許宴,只是平靜地看著我,聲音一如既往地冷靜:「需要幫忙嗎?」
「不用,學長,這是我的私事。」
我深吸一口氣,強迫自己冷靜下來。
許宴看陸澤對我說話,嫉妒的火焰幾乎要從眼睛裡噴出來。
「私事?程思,我們一年多的感情,在你這就成了可以隨便丟掉的私事?」
他轉而用一種受傷的語氣對我說道:「我給你買的電腦,給你買的手機,我們一起出去吃飯看電影,這些你都忘了嗎?」
我氣笑了。
「許宴,你是不是失憶了?」
「電腦、手機、運動鞋,是我給你買的,總價超過五萬。」
「我們出去吃飯看電影,十次有九次是我付錢。」
「你當家教賺的錢,除了給你妹妹,剩下的都拿去給你那些狐朋狗友買皮膚了。」
「我吃你的用你的?你送過我最貴的禮物是那條 99 塊的打折銀項鍊!」
「我把你當成一起奮鬥的伴侶,你卻把我當成 ATM!」
「現在分手了,你還想往我身上潑髒水,毀我名聲?」
「許宴,你的臉皮是城牆做的嗎?」
我的話像連珠炮一樣,每一個字都砸在實處。
許宴的臉漲成了豬肝色。
周圍同學看他的眼神,也從看熱鬧變成了鄙夷。
他指著我,嘴唇哆嗦著,一個字都說不出來。
「你……你……」
最終,他惡狠狠地瞪了我一眼,又怨毒地看了一眼面無表情的陸澤,落荒而逃。
世界終於清凈了。
「你沒事吧?」陸澤的聲音在我頭頂響起。
「沒事,謝謝學長。」我搖搖頭。
他看著我,忽然說:「對待瘋狗,躲避是沒用的,你應該直接打回去,打到他怕為止。」
他的話讓我一愣。
我抬起頭,對上他深邃的眼眸。
那裡面沒有同情,只有一種近乎冷酷的平靜。
那一刻,我忽然明白了,面對許宴這種人,我的理智和退讓,只會被他當成軟弱。
那場鬧劇之後,許宴徹底銷聲匿跡了一段時間。
我則把全部精力都投入到了「啟航杯」的準備中。
我們小組抽到的題目是「基於用戶行為分析的新零售模式構建」,核心在於數據建模和算法設計。
作為組長,我主動攬下了最難的部分。
分手後的痛苦和憤怒,全都化作了代碼和數據流。
然而,就在我們為決賽做最後衝刺的時候,許宴又出現了。
家教丟了,名聲臭了,連學生會的職位也被撤了下來。
他開始瘋狂地騷擾我。
這一次,他選擇了更陰暗的方式。
他每天深夜給我發幾十條簡訊,內容從哀求到威脅。
我不堪其擾,直接拉黑了他。
直到那天,我從圖書館出來,天已經黑了。
剛走到宿舍樓下僻靜的拐角,一個身影猛地從黑暗中竄出,抓住了我的手腕。
是許宴。
他雙眼布滿血絲,身上帶著一股濃重的酒氣。
「程思,你為什麼不回我信息?你以為拉黑我就沒事了?」
「放手!」我用力掙扎。
他卻抓得更緊。
「不放!」他面容扭曲,幾乎是吼出來的。
「我什麼都沒有了!保研的名額也沒了!都是你害的!」
「你憑什麼過得那麼好?憑什麼還能參加啟航杯?憑什麼陸澤還對你另眼相看?」
「我告訴你,程思。」他湊近我,聲音壓得極低。
「你最好自己退出啟航杯,否則,我讓你身敗名裂!」
「你什麼意思?」
他冷笑一聲:「你忘了我大三那個獲獎課題了嗎?《非線性金融數據動態權重修正模型》,名字很厲害吧?」
「我告訴你,那原始數據爛得跟狗屎一樣!」
我的心猛地一沉。
他看我臉色變了,笑得更加瘋狂。
「當時吳教授看了我的報告,眼睛都亮了,說我是他見過最有天賦的學生。」
「可他不知道,我只是用了一個小小的平滑算法,把那些難看的波動全都抹掉了而已!哈哈哈!」
「我手上可有的是能讓吳教授身敗名裂的東西。」
「學術造假,這個帽子夠大吧?」
「到時候,你作為他現在最得意的學生,你猜猜,你會怎麼樣?」
吳教授,就是當初帶許宴做那個獲獎課題的導師,也是這次「啟航杯」的評委會主席。
許宴這是在威脅我,如果我不退出,他就要把學術造假的醜聞捅出來,把德高望重的吳教授和我一起拉下水。
他瘋了。
他要用自毀的方式,來毀掉我。
5
回到宿舍,我一夜未眠。
許宴的話,像魔咒一樣在我腦中盤旋。
「平滑算法」、「抹掉波動」……
一個瘋狂的念頭在我腦海中形成。
我不需要他自爆。
我要親手找到他作弊的證據。
第二天,我以「啟航杯」項目需要借鑑相關模型為由,向學院資料庫申請調閱了許宴那個獲獎項目的全部結題報告和附件。
管理員告訴我,原始數據已經封存,無法調閱。
我碰了壁,但沒有放棄。
我把那份長達五十多頁的結題報告列印出來,帶回實驗室,一個字一個字地摳。
我把自己關在實驗室整整兩天。
終於,在一個不起眼的角落,我找到了問題所在。
他在數據預處理階段,提到使用了一種「改良的移動平均法」來處理異常值。
這太奇怪了。
移動平均法是一種非常粗糙的處理方式,很容易丟失重要的短期波動信息。
一個以「非線性」、「動態權重」為賣點的創新項目,怎麼會在第一步用這麼粗暴的方法?
這就像一個特級廚師聲稱要做分子料理,第一步卻是把頂級和牛放進絞肉機。
背後一定有貓膩。
我立刻開始著手復現他的模型。
我找不到他的原始數據,但我可以自己構建一組波動劇烈、充滿「噪音」的模擬數據。
然後,我嘗試用標準的移動平均法去處理。
結果正如我所料,處理後的數據丟失了大量關鍵信息,根本無法支撐他後續模型的運算。
那麼,他所謂的「改良」到底是什麼?
我盯著螢幕上他報告里的那行代碼,一遍又一遍地看。
import SmoothCurve as sc
processed_data=sc.moving_average(raw_data,window=5,method='enhanced_polynomial')
SmoothCurve,一個我從未聽說過的 Python 庫。
我立刻在網上搜索,發現這是一個相當小眾的開源數據包。
我沒有直接下載最新版,而是去翻閱它的歷史版本記錄。
我的心臟狂跳起來。
在 1.2 版本的更新日誌里,我赫然看到一條開發者發布的漏洞修復說明:「修復了 1.0 版本中 enhanced_polynomial 插值算法在特定參數下,會過度平滑數據,導致生成虛假趨勢線的致命 BUG。」
致命 BUG!
而許宴提交報告的時間,正好是在這個 BUG 被修復之前!
我找到了!
他不是什麼天才,他只是一個利用了別人代碼漏洞的騙子!
他所謂的「優化」,不過是徹頭徹尾的學術欺詐!
我很快冷靜下來。
我不需要他的承認。
我需要一把更快的刀。
我整理好我的發現,包括對那個 BUG 的復現代碼,以及一份清晰的技術說明。
然後,我給吳教授發了一封郵件。
主題是:【關於「啟航杯」項目模型中一個技術難題的緊急請教】
郵件里,我先表達了對他指導的感激,然後「誠惶誠恐」地提出了我的問題。
「吳教授您好,在備戰啟航杯的過程中,我學習了許宴學長那篇獲獎的《非線性金融數據動態權重修正模型》,獲益匪淺。」
「但在復現他數據預處理的步驟時,我遇到了一個難題。」
「他提到的 SmoothCurve 庫的早期版本,似乎存在一個會過度平滑數據的 BUG,導致我模擬的數據產生了虛假趨勢。」
「附件是我的復現代碼和該庫的官方 BUG 說明。我才疏學淺,一定是我哪裡理解錯了學長的改良移動平均法。懇請教授在百忙之中能給予一點指點。」
我按下發送鍵。
刀,已經借出去了。
6