第487章 打敗你的不是我,是二進位(數學向
2023-10-22 02:32:52 作者: 孫二十三
兩分鐘一盤的方式,就這樣持續了好久好久,一直到西邊的太陽大部分沉下了山, 只剩下一條紅邊發著光,把棋盤上棋子的影子拉得老長。
「啪!」
李察再一次落子,小丑一掃棋盤,就看出問題了,直言道:「我又輸了,不過不要緊, 我們再來!我不信,我一盤都贏不了。」說著話,小丑就開始收拾棋盤, 把所有的白子撿起。
李察卻是出聲拒絕:「不用了小丑先生,即便再下一百盤,只要我持黑子先走,你就必定輸,這和棋藝無關,和數學有關,是經過計算的。」
「嗯?」小丑停住撿白子的動作,看向李察,出聲問,「什麼意思?」
「我的意思就是,五子棋的規則雖然簡單,但經過計算卻是存在漏洞,在沒有任何限制的情況下,先手黑子是必勝的,對, 必勝——只要按照特定的方式走,和任何人下, 都是必勝。
一般來說, 為了公平,正常對局中黑子會有『三三禁手』、『四四禁手』、『四三三禁手』、『四四三禁手』、『長連禁手』。
所謂的『三三禁手』,就是黑子落下一個子,會同時形成兩個或兩個以上的三連子,這是在先手前提下,白子根本無法抵抗的。
因此,正常對局中,黑子一旦走出『三三禁手』或者被迫走出『三三禁手』,就會判定為負。但現在我們之間的對局,沒有禁手,那麼你自然也就沒有獲勝的任何希望。」
「這也能算出來?」小丑還是有點不太相信。
「事實上,越是簡單的遊戲,越容易計算。」李察攤手道,「如果你有所懷疑的話,我們可以再換一個遊戲玩。」
「什麼?」
「拿棋子的遊戲。」李察道,說著話把棋盤拿開,抓了一把棋子,數了數一共十九個,分成三堆。
第一堆三個棋子,第二堆七個棋子,第三堆九個棋子。
「規則是這樣的。」李察道,「我們兩個人輪流從這三堆中拿棋子,每次都可以選擇任意一堆拿。拿的棋子數量,最少為一個,最多一堆全部拿走。等到剩下的最後一個棋子誰拿,誰就輸。」
頓了頓,李察看著小丑繼續道:「這個遊戲和五子棋不一樣,但同樣可以通過數學計算出來,所以先手也是必勝的。」
小丑眼睛閃了閃,盯著棋子思考了半晌:「我不信,我現在就想到了好幾種後手取勝的方式。」
「既然這樣,那我們試一試。」李察道,先手就從最右面九個棋子中的一堆中,拿走了五個。三堆棋子,立刻變成了「三七五」的樣子。
小丑想了想拿走了最右面剩下的四個棋子,變成了「三七」的樣子。
李察跟著拿走了第二堆的四個棋子,變成「三三」的樣子。
小丑盯著棋子看了好半天,沒有下手,看向李察問道:「我現在是不是算輸了?」
「對。」李察點頭,「雖然還沒有出結果,但你已經輸了。
現在是3:3的情況,你如果一次性拿走一堆,我可以拿走剩下一堆的兩個,留下一個給你,你輸。你如果拿走一堆中的兩個,我拿走另外一堆,留一個給你,你輸。
出于謹慎,你從一堆中只拿一個棋子,那我就從另一堆中也拿一個棋子,變成2:2。
而2:2和3:3,沒有本質上的區別——你拿一堆,我拿另一堆的一個,給你留一個,你輸。你拿一堆中的一個,我把另一堆全部拿走,給你留一個,你還是輸。無解。」
「但這只是一種情況,還有其他情況才對,不可能只是因為你先手,就一定贏。」小丑堅持道。
李察搖搖頭:「的確不是只有著這一種情況,全部的情況大體可以分為三種,也就是演化到最後,先手留下的必勝形態。
第一形態,最極端,給你剩一堆,且只有一個棋子。無論你拿不拿,都輸。
第二個形態,給你剩下兩堆,只要兩堆數目一樣,無論有多少,最後統統變成2:2,或者第一形態,你輸。
第三個形態,剩餘三堆,複雜一些,但最終還是會一點點的變成前兩種,只要先手不出錯,後手的你依舊輸。」
「但你先手怎麼能不出錯?」小丑聲音變大,略顯失態,「你又不知道我是怎麼想的,怎麼能控制我的拿法?而你既然不能控制我的拿法,又怎麼能保證你每次拿的都不會出錯?」
「沒有這麼複雜的。」李察道,「在計算中,我不需要知道你怎麼拿,只要給你一個平衡態就行。簡單講的話,首先,我把每一堆棋子的數量都轉換成二進位橫向排列。對了,二進位就是把普通計算的『逢十進一』變成『逢二進一』,比如這樣。」
李察說著,用細長的一個棋子,在地上分別寫下三行數字:
0011(3)
0111(7)
1001(9)
接著在三行數字下面劃了一道橫線,在橫線下把數字相加,就變成了數字:
1123
「有這麼一個定義,一個數字是2的倍數便是偶數,不是的話是奇數,1123四個數字中,存在奇數,此時就是非平衡態。
而我要做的就是,通過拿棋子,給你變出一個平衡態來,比如最開始我從第三堆拿出五個,變成了平衡態,也就是這樣。」
說著話,李察抹掉寫的數字,用細長的棋子再次寫起來:
0011(3)
0111(7)
0100(4)
——
0222
「現在所有的數字都是偶數,就是一種平衡態,在平衡態的情況下,無論你怎麼拿,我做的就是把它繼續變回平衡態,這樣到最後,輸的就是你。
所以,你怎麼拿都沒關係,只要我先手,並且拿出一個平衡態來,你就輸了。這是先手必勝的原因——打敗你的不是我,而是數學,是二進位。
這個要比五子棋的原理簡單,計算量也少,你應該能想明白。」
李察說完了,小丑沉默。
沉默中的小丑,死死的盯著李察寫的數字看了半天,接著自己拿棋子來開始在地上書寫,然後分出三堆棋子不斷模擬。模擬的結果,和李察說的一樣——每一次都是先手必勝。
最終小丑看向李察,表情很複雜。
李察開口了:「小丑先生,你看到了吧,我和你玩『小丑棋』很難玩過你,但是你要是和我玩『五子棋』、『拿棋子』之類的遊戲,你也永遠贏不了。之所以這樣,和智慧、謙遜無關,只是一個選擇的問題。
你之所以選擇和我玩『小丑棋』,是因為你在玩之前就知道會贏。而我同樣知道,和你玩『五子棋』、『拿棋子』我也會贏。這是擅長領域的差異而導致的,也可以看作是主場不同。正因此,我才不怎麼認同你最開始說的話。」
「對了。」李察看向小丑,認真的問道,「話說,小丑先生,你還記得你本來和我說什麼,對吧?」
「我——」小丑站起身,看著李察,目光一連變了好幾次,最後深吸一口氣道,突然轉身,「木台建好了,我該表演了,遊戲就先結束吧,有機會……我們下次再聊。」
「還有下次嗎?」李察問。
「也許。」小丑說著,頭也不回的向著木台走去。
這時西方的太陽徹底落山,天空跟著一塊黑下去,李察看著小丑的背影,眼睛微眯。
……
ps:拿棋子的原形,就是分火柴,算是數學上一個經典的問題,網上有很多解答,文中的二進位解法是我在知乎一個答案上看到的,算是通俗易懂的一種——至少我能弄懂,有興趣的同學可以和自己的身邊人玩玩這個遊戲,小心別挨揍就行。
話說,我突然發現,我現在比上學的時候,更喜歡學習了。是錯覺嗎?嗯,一定是錯覺。