演算法和大便
我專注的思索,這真是一個難題,令我心無旁騖。 我要在一個狹小的虛擬機器裡,塞進去一個加密演算法,這太難了。
這是一個美妙的早晨,空氣中蒸騰著薄薄的霧霾,對初夏時節來說,是令人歎服的典型氣候。
我苦苦的思索演算法,無瑕分心。但我缺乏男人優秀的直覺,完全沒有預料到更難的難題就在前頭等著我,就在這個美妙的初夏早晨。
我身處一個巨大的火車站,據稱乃是亞洲最大、最豪華的。要知道,我凌晨 5 點就動身趕到這個火車站,戎馬倥傯馬革裹屍,匆忙的行程總給人一種神聖的使命感,覺得自己在做無與倫比的大事業
當一個人戎馬倥傯的時候,他必然要面臨一個不那麼難的難題,是火車呢? 還是飛機? 這就如同早晨 8 點要跨越北京城從北五環去南三環一樣,你是選擇地鐵呢,還是選擇開車? 兩難那。
我通常選擇高鐵,價格上的考慮在這個選擇中起到了決定性因素。當然,錢不是問題,東北人常常這麼說,我也學會了,或者說錢不是唯一的問題。高鐵上你可以隨意活動,可以在車廂連線處伸胳膊伸腿、蹦躂跳躍,甚至打一套強身健體,幾乎可以實戰格鬥的傳武。然而,在飛機上,我從來沒見過有人跳高一尺以上。可見,舒適上,高鐵取勝一籌。
如果一定要給高鐵挑一個毛病的話,我要說,那個掩瑜之瑕,就是廁所。
高鐵站的廁所,與飛機場的廁所之間,差著一萬個傳統的紅木馬桶。
關於廁所,真是一言難盡衷腸綿綿。在此我要鄭重感謝所有的五星級酒店,喜來登、希爾頓、里茲卡爾頓、威斯汀,不一一點名了,幾乎所有的五星級酒店,都在不同的時間裡承擔過救世主的角色,一定意義上,五星級酒店就像蹲在街角隨時提供幫助的蜘蛛俠、超人、鋼鐵俠,一次次撫慰你,將你從痛不欲生中拯救,獲大輕鬆。 令人難以索解的是,越豪華的酒店,越是親民,洗手間隨意用,而那些牆皮斑駁、床單稀髒十年不換的快捷酒店,卻離平民最遠,根本沒有廁所可用。古話說,倉稟實而知禮儀,信夫!
睡五星級酒店的床,與在五星級酒店的洗手間裡排洩,我認為前者帶來的享受感,與後者相比,中間差著十次吸毒,還有一百次與林志玲的約會。
高鐵的廁所就是這樣,骯髒的瓷磚地板上鋪著格柵的橡膠墊子,素面朝天的蹲坑,沖鼻的尿騷味,熙熙攘攘大呼小叫的排洩者,高鐵的廁所就是這樣。我頗為高鐵的廁所感到遺憾。
可是,我繞不開它,我的高鐵廁所,就像牛頓繞不開地心引力,愛因斯坦繞不開光速,中本聰繞不開雜湊演算法。我 5 點鐘戎馬倥傯來到高鐵站,高鐵站的廁所冷靜的站在那裡,微微笑著等待與我的約會。
我走進廁所的時候,略作觀察,掌握了情況與局勢。該公廁共計 6 個隔間,悉數鎖緊被佔用,用電商的說法是售罄。排洩的聲音,從隔間縫隙和上空傳出,此起彼伏,交相輝映。有兩位先到者,站在隔間外面等待。
這是一個什麼機制呢? 我的大腦從加密演算法抽身而出,開始思索這個公廁的治理模式。 兩位等待的人,他們每人分配了 3 個隔間,還是每人只佔有一個隔間的排隊等待權? 我是一箇中國人,但我願意排隊,也願意遵守習俗約定的傳統機制。
我想起了蘭伯特在 1992 年提出的演算法,麵包店排隊演算法,和這個公廁排隊的場景是多麼相似啊。按說,公廁排隊的問題更加迫切緊急,而麵包早一點吃到晚一點吃到,有何大礙? 蘭伯特老先生定然沒用過公廁。
我略一思索,就站到了最裡面那個隔間之前,而兩個先到的排隊者並沒有表示異議,通過這樣的握手協議,我確認,我可以排隊了。我佔用的隔間裡傳出了大力的呻吟聲,戎馬倥傯馬革裹屍,裡面無疑是一場大事業。
然而,工作量證明演算法的競爭中,一部分靠算力,一部分要靠運氣。我的前任坑主非常爭氣,他大力呻吟幾聲後,快速草草收場,嘩嘩沖水後,施施然走了出來。
我並未一步跨入,而是伸手對先到的那位臨坑排隊先生,做了一個符合禮儀的手勢。
“您先請?” 我說
那先生有點驚訝,但瞬間醒悟,他回了一個符合禮儀的手勢。
“您先請!” 他說
“還是您先來吧?” 我再次符合禮儀。
“不不,我等這個,您先來。” 他堅定且謙遜,真是文明禮貌的好公民啊。
老北京人真是知書達理,我心裡暗暗讚歎,聽口音,臨坑這位先生是老北京人,而且是東西城的,即便郊區一點,也不會遠過 2 個千米。其實我說的也是純正的北京話,兒化韻十足且不過火,但我不是北京人,我是河南人,學會北京話是為了方便與城管打交道。
我是河南人,這是深深烙在骨頭裡,寫在血液的DNA上,無法篡改永不停機。有幾次,我凝視著街道上的井蓋,一種發自本能的衝動燒灼著我的內心,但被我剋制住了,我用北京腔在心裡說:“姆們要一井蓋幹嘛呢? 家裡也沒地兒放啊。” 就此說服了自己。
我邁進了隔間,卻立刻就僵硬了,說如墜冰窟也不過分。
那蹲坑上有大便!我說的不是坑裡有大便。坑裡有大便是常有的,很多人大便後不沖水,為了留下痕跡下次再來不至於迷路,這是可以理解的。坑裡有大便,我根本不會僵硬,我說的是,蹲位上有大便!要用來踏腳的蹲位上,排列了四小坨大便,俗稱屎。為了讓大家理解方便,我畫了個圖,這和講解演算法時需要用圖是一個道理。
圖中那四個褐色實心小圓點,就是大便。在圖中看起來很cute,但在實際的現實場景中,形狀與色澤都很複雜,一言難盡。
那四粒屎既不閃爍,也不黯淡,只有一種心如死灰的褐色,大小 size 和市場上標準的酒心巧克力相仿。它們的主人一定是個木然的人,而且是男人,因為這是男廁所。
但這個男人一定不簡單,他是如何撇下這四粒屎的? 從陣勢看,很難的,莫非他會傳武? 那種既強身健體,也可實戰格鬥的傳武?一個會傳武的男人,在凌晨的火車站公廁,憑一身絕世的梅花樁功夫,撇下四粒大便?這是奇幻驚悚劇麼?
我無瑕去猜測屎的神祕主人的心理與動機,我陷入了深深的思索,勇敢的直面這個難題。而那四粒大便,鎮定自若,兀自擺著凶險的陣法,像是要祭司什麼,又像是要陣腳絲毫不亂,
我試著將腳踩在大便的間隙中,好難好難。我現在覺得,在狹窄的虛擬機器裡塞進去一個加密演算法,不算什麼鳥事了,so easy。
我有點想打退堂鼓了,也許我可以放棄這個蹲位,走出去,重新排隊,去等待一個沒有大便的蹲坑,或者只有不超過 3 粒大便的蹲位也行啊。然而,我真的很急,戎馬倥傯馬革裹屍時不我待。
事實證明,武功不是練出來的,而是逼出來的。我經歷一番計算、嘗試、調整、實踐後,居然成功在屎的間隙蹲了下來,但我要小心,屎是那麼的近,我可以聽到屎的細微呼吸聲,只要稍不留神,我的鞋子就一定會侵犯到屎的領土。我說過,我是自由主義者,自由的邊界最重要不過,我不想侵犯哪怕一坨大便的自由,何況現在是四坨大便。
我當時處在了兩個執行緒執行的狀態,一個執行緒是呵護守衛屎的領土,另一個執行緒就不說了大家都知道。我忙裡偷閒,又開了第三個執行緒,思索了下人類與大便之間的關係。
人類的文明表徵,根本就不是科技,不是什麼加密演算法、虛擬機器、更不是啥體制文化舞的。人類文明的唯一表徵,乃是對待大便的態度。大便,乃是人類的遺棄物,對待遺棄物的態度,截然劃分了兩種文明。一種高度熱愛遺棄物,不離不棄,生活的處處都沾染著遺棄物的痕跡,在公廁這樣處理遺棄物的場所,難割難捨餘情不斷,捨不得衝,捨不得入坑。 另一種則高度厭棄遺棄物,洗手間裡絕見不到一絲遺棄物,對大便心硬如鐵。很難說,那種文明更好,只能說尊重多樣性,各個不同的民族有著不同的選擇。
對待遺棄物上,不存在普世價值。 我的思緒繼續飄飛,若是有一種外星文明,擁有高度發展的科技與文化,對待遺棄物採取的是第一種態度。那麼,很可能那個星球上,就會將大便通通收集起來,一點一滴也不遺棄,通通收集起來,堆成神聖的堆,存放在豪華的大廳中,時時瞻仰祭拜追思。爺爺告訴爸爸,爸爸告訴兒子,這都是我們歷史遺留下來的大便,是我們的過往,也是我們的未來。我認為,這樣的文明,也是可能存在的。宇宙歡迎多樣性,也尊重多樣性。
然而,我為何就對大便如此提防呢? 即便我不小心,侵犯了大便,踩了上去,又如何? 再激進些,我的梅花樁沒蹲好,跌倒坐在了蹲坑大便了,不過也就是蹭一身屎,難道就不能繼續一天的戎馬倥傯了?不就是開個關於演算法的會麼? 帶著屎開有何不可?誰能說,你會議上見到的人,就不是第一種文明薰陶出來的人?
然而我梅花樁的功夫還可以,在這樣富含哲理的思索中,我漸次結束了兩個執行緒,最後小心翼翼的成功站起來,結束最後那個關於領土疆界的執行緒。 那四位文明的表徵,依然不為所動,八風吹不動,冷冷的盯著公廁,盯著世間,彷彿在等待瞻仰祭司追思。
我緩緩退出火車站的公廁,外面人流熙熙攘攘川流不息,一片祥和繁榮的景象。人們戎馬倥傯馬革裹屍,都在從事無與倫比的大事業。
我有點疲憊,我坐下,掏出手機茫然的翻看,川普寫了封信給三兒,信中情深意切感人至深。我的思維也疲憊了,猜不出他們倆誰的坑更難蹲下,誰又是誰的大便。誰又能設計出一個演算法,幫他們成功蹲下,還不侵犯大便的領土與疆界,好難的題目。
外面人流熙熙攘攘川流不息,一片祥和繁榮的景象。人們戎馬倥傯馬革裹屍,都在從事無與倫比的大事業。
我無心考慮虛擬機器演算法什麼了,沉浸到一種對世間萬事萬物的熱愛中。
相關文章
- 淺談Linux的五大便捷之處Linux
- 網友支招:如何成為一個早上能大便的人?
- 客戶管理系統帶給企業四大便捷
- 那隻會朝你丟大便的猴子,是《只狼》裡最成功的BOSS
- BP演算法和LMBP演算法演算法
- KMP演算法和bfprt演算法總結KMP演算法
- 字串匹配-BF演算法和KMP演算法字串匹配演算法KMP
- 系統生物學研究所:新研究表明大便頻率可以預測健康狀況
- CAS演算法和ThreadLocal演算法thread
- 雪花演算法和UUID演算法UI
- 最短路徑——Dijkstra演算法和Floyd演算法演算法
- 聊聊演算法——BFS和DFS演算法
- 《演算法》- 佇列和棧演算法佇列
- 最小生成樹——Prim演算法和Kruscal演算法演算法
- 最小生成樹-Prim演算法和Kruskal演算法演算法
- 最小生成樹:Kruskal演算法和Prim演算法演算法
- 演算法---貪心演算法和動態規劃演算法動態規劃
- 粒子群演算法和遺傳演算法的比較演算法
- js資料結構和演算法(9)-排序演算法JS資料結構演算法排序
- 模式識別中的Apriori演算法和FPGrowth演算法模式演算法
- 總結下js排序演算法和亂序演算法JS排序演算法
- Dijkstra演算法和Prim演算法有什麼區別?演算法
- [-演算法篇-] 最大子序列和演算法
- TCP協議、演算法和原理TCP協議演算法
- 資料結構和演算法資料結構演算法
- 演算法面試(七) 廣度和深度優先演算法演算法面試
- 關聯分析Apriori演算法和FP-growth演算法初探演算法
- Dijkstra演算法和Floyd演算法超詳解以及區別演算法
- 資料結構和演算法——棧的面試演算法資料結構演算法面試
- 連通圖演算法詳解之① :Tarjan 和 Kosaraju 演算法演算法
- 03EM演算法-EM演算法流程和直觀案例演算法
- 手寫fft演算法,和內建fft演算法對比FFT演算法
- 強化學習演算法筆記之【Q-learning演算法和DQN演算法】強化學習演算法筆記
- 【資料結構與演算法】字串匹配(Rabin-Karp 演算法和KMP 演算法)資料結構演算法字串匹配KMP
- TTS 演算法對比:DNN 結果和 HMM 演算法結果TTS演算法DNNHMM
- Java實現AES和RSA演算法Java演算法
- 資料結構和演算法-堆資料結構演算法
- 和同事談談Flood Fill 演算法演算法