「 豆瓣讀書,讓好書遇見你 」
滕子京/文丨
本文經作者授權發布,未經允許,禁止轉載丨
有一個流傳已久的說法,如果你隨機點開維基百科任何一篇文章,點進文章中第一個連結,進入之後再點擊該文章中第一個連結,持續點下去,你最終會到達同一個頁面,那便是——「哲學」。
是不是很有萬法歸一的終極歸宿感?一路上你可能會經過「數學」、「科學」、「知識」、「知覺」,它們都只是路邊風景。當你翻山越嶺到達終點,惟有哲學在此等候多時。
就像神話中的英雄都逃不過自己的宿命。實際上,這個說法是真的。截至2016年統計,它的準確度高達97%。九十七分天註定,三分靠打拼,我們可以容忍這三分的隨機性。而正是這份不確定,當我們最近一次蕩起雙槳,夥伴們玩起成語接龍時,讓我很想找到它的隱藏秘辛:到底接龍接在什麼地方,才最容易折戟沉沙,抑或,香消玉殞?
經典版本
簡單梳理一下規則。各言其志嘛,最開始隨便選一個成語,第一個人想到什麼,比如很有慈悲心的Ta說了自己的「惻隱之心」。第二個人在暮春歌詠的暢快中,從所有心字開頭的成語裡,接上「心嚮往之」。第三個人沒有很多選擇,撓撓頭接「之乎者也」。到了「也」字算是玩死啦,第四個人已經無話可說。
惻隱之心 → 心嚮往之 → 之乎者也 → Game Over!
這裡故意舉了一個很短的例子。長一點的當然也能接:
居功自傲 → 傲睨萬物 → 物阜民安 → 安家立業 → 業精於勤 → 勤學苦練 → 練達老成 → 成事不說 → 說長道短 → 短褐穿結 → 結髮夫妻 → 妻兒老小 → 小時了了 → 瞭然於胸 → 胸中無數 → 數見不鮮 → 鮮車怒馬 → 馬工枚速 → 速戰速決 → 決勝廟堂 → 堂堂正正 → 正正之旗 → 旗幟鮮明 → 明鏡高懸 → 懸崖峭壁 → 壁壘森嚴 → 嚴氣正性 → 性命交關 → 關門打狗 → 狗吠不驚 → 驚魂未定 → 定於一尊 → 尊師重道 → 道義之交 → 交口稱譽 → 譽不絕口 → 口齒伶俐 → Game Over!
這個嚴格版的規則裡,每一個成語的首字,必須和前一個成語的末尾漢字相同。已經用過的成語不能再用,避免出現「為所欲為」、「仁者見仁」這樣無限循環的BUG。
規則確定了,建成模型,非常清晰的有向圖 (Directed Graph) 問題。把每一個成語都想成一個節點,根據末字指向所有以這個字開頭的其他節點。畫出來如下圖所示。
▲成語有向圖局部示例
為了節省留白沒有畫出箭頭,指向關係應該不言自明。節點條目來自一個13011詞的成語詞典資料庫。網上還可以找到別的版本,但我選了一萬三千詞這個。既可以照顧到一些同義詞變化,比如「茶餘飯後/茶餘酒後」,或者順序倒換像「地坼天崩/天崩地坼」;同時也去掉了長尾上詞頻較低的用法,不考慮那些讓人感覺不那麼像成語的成語。
當然也節省很多CPU時間。當圖建好了之後。接下來要做的
1. 從圖中隨機選擇一個節點,也即一個成語,作為當前節點。例如,「按部就班」
2. 在屏幕上列印當前節點
3. 讀取本節點指向的所有能接的成語選項。例如「按部就班」有三個可以接的選項
按部就班: 班荊道故 班門弄斧 班師回朝
但要排除當前節點本身以外,比如「為所欲為」指向了自己
為所欲為: 為所欲為 為叢驅雀 為德不卒 為富不仁 為非作歹 ....
選項表中應該划去
4. 當前節點已經用掉了。從圖中摘掉當前節點,以及所有相鄰邊。就像你搭格子的時候,拆掉一個小球,把插在小球上的小棍也都拆掉。
此時我們的圖會變得稀疏一點點
5. 從剛才得到的選項列表中隨機選擇一個接上,作為新的當前節點
重複上述步驟2-5,直到當前成語沒有任何可接的選項了,此時你得到了圖中一片孤獨的樹葉,沒有任何樹枝相連。這個時候就算接龍玩死了。屏幕上列印出來的,就是本次接龍的序列。
我們要做的,就是把遊戲重複多次,就能找到最容易玩死的地方。
從直覺你可能會說,直接找沒有下家的成語不就成了嗎。嗯,那是一種考慮這個問題的方式,換一個角度思考,除非你脫口而出第一個詞就把遊戲終結,其他時候,總得是有一個什麼別的詞,把你引到現在的詞。比如已知「似懂非懂」是一個死亡節點。你需要一個別人說「xxx似」才能到這兒,對吧。
所以最容易死的應該是進口大、出口窄的詞。它的首字經常出現在別的成語的末尾,但它指向的下家卻山窮水盡。要看它,得看它的上家,上家出現的概率又取決於它上家的上家。每一個詞都不是孤立的。要決定最後那個節點,除非把遊戲玩上一遍不可。
書讀百遍,其義自見。玩遊戲也不例外,玩的遍數多了,就能進行統計了。那麼老老實實地玩唄,寫個程序開始跑,屏幕上滾動出現下列字樣:
學而優則仕
五方雜處 → 處心積慮
十萬八千裡 → 裡醜捧心 → 心如死灰 → 灰飛煙滅 → 滅門絕戶 → 戶告人曉 → 曉風殘月 → 月章星句 → 句斟字酌 → 酌盈劑虛 → 虛無縹緲
貴遠賤近 → 近在咫尺 → 尺寸之功 → 功標青史 → 史不絕書 → 書同文,車同軌
言為心聲 → 聲振林木 → 木雕泥塑
扼吭拊背 → 背水一戰 → 戰天鬥地 → 地醜德齊 → 齊家治國 → 國士無雙 → 雙瞳剪水 → 水秀山明 → 明槍暗箭 → 箭在弦上 → 上下交困 → 困而學之 → 之乎者也
每一局結果列印一行。玩到一萬局,已經可以看出套路。在總共10741局接龍裡,噹噹噹噹,最容易玩死的是「李代桃僵」!!!一共被玩死了114次。
▲10741局成語接龍
仔細看看最容易玩死成語二十強,都是些沒有下家的孤魂野鬼,什麼「之乎者也」、「穀賤傷農」,都是嗯嗯嗯……沒法接的。
但讓「李代桃僵」成為榮耀王者的,就是它的來源比較廣啦,「投桃報李」、「公門桃李」、「道旁苦李」、「張王趙李」……一共九個,而這九個也是吸引流量比較多的。
相比之下,「危在旦夕」同樣也是沒有下家可接的,而且一共有上家有十六個之多:「居安思危」、「岌岌可危」、「乘人之危」……但這些上家的流量少一點,一共被玩死32次。好比十六家小媒體幫你活動主推,比不上人家九個大V。
一句話總結排行榜:上家來源廣、下家沒的想,橫批:李代桃僵。
輕鬆版本
我們平常會玩簡化版的成語接龍,只要讀音,不管漢字,也不管音調,字母拼出來相同就算接上,「洞房花燭」,可以接「珠聯璧合」。
放鬆規則,遊戲才玩得下去嘛,畢竟離高考很遠,學過的都忘了……但計算機不會忘,保證窮舉。這樣一來接龍會變得很長長長長、長到霸屏。選一個稍短的:
玄之又玄 → 喧賓奪主 → 著作等身 → 神龍見首不見尾 → 唯唯否否
輕鬆版本比較明顯,玩了四千多局局足夠了。依法統計,前二十強名單如下,看到最後結果我整個人是「地坼天崩」的:
▲4367局成語接龍
套路就是結尾那幾個,崩啊,潤啊,否啊,耨啊,都是些沒接茬的。
把幾個末尾字讀音合併一下趨勢更明顯了,beng字一騎絕塵遙遙領先,4367局中一手KO1164次,佔了全Game Over四分之一強。
順便說這個結果有賴於選擇的詞典,沒有收「潤筆之資」、「潤物潤身」,讓run沒有接茬,不然排行就會變了。
順便說下那個資料庫的拼音有錯誤,最後手動糾正了,但程序白跑了兩個晚上(一局超慢的……十秒級),555。
一句話總結:要想虐,就選崩,一團圓潤,全劇終!
號外:小秘技
既然都窮舉了,不妨說幾個秘技。當你們「心照不宣」,想和對方「打情罵俏」,結果發現是自己「心懷叵測」,因為你們根本「八字沒一撇」。這四個詞,在嚴格版本裡,都是一擊必殺。
要是記不住,直接上「地坼天崩」,無論在哪個版本,都能直接地坼天崩。但國之利器,不可以輕易使用,因為與人為善,要以和為貴,孟子教導我們得道多助,失道寡助喔。
< END >
長按下方二維碼下載豆瓣App
謝謝閱讀。如果你喜歡這篇文章,可以點擊閱讀原文和作者交流:)