第487章 打败你的不是我,是二进制(数学向,慎订,不喜可跳)
两分钟一盘的方式,就这样持续了好久好久,一直到西边的太阳大部分沉下了山, 只剩下一条红边发着光,把棋盘上棋子的影子拉得老长。
“啪!”
李察再一次落子,小丑一扫棋盘,就看出问题了,直言道:“我又输了,不过不要紧, 我们再来!我不信,我一盘都赢不了。”说着话,小丑就开始收拾棋盘, 把所有的白子捡起。
李察却是出声拒绝:“不用了小丑先生,即便再下一百盘,只要我持黑子先走,你就必定输,这和棋艺无关,和数学有关,是经过计算的。”
“嗯?”小丑停住捡白子的动作,看向李察,出声问,“什么意思?”
“我的意思就是,五子棋的规则虽然简单,但经过计算却是存在漏洞,在没有任何限制的情况下,先手黑子是必胜的,对, 必胜——只要按照特定的方式走,和任何人下, 都是必胜。
一般来说, 为了公平,正常对局中黑子会有‘三三禁手’、‘四四禁手’、‘四三三禁手’、‘四四三禁手’、‘长连禁手’。
所谓的‘三三禁手’,就是黑子落下一个子,会同时形成两个或两个以上的三连子,这是在先手前提下,白子根本无法抵抗的。
因此,正常对局中,黑子一旦走出‘三三禁手’或者被迫走出‘三三禁手’,就会判定为负。但现在我们之间的对局,没有禁手,那么你自然也就没有获胜的任何希望。”
“这也能算出来?”小丑还是有点不太相信。
“事实上,越是简单的游戏,越容易计算。”李察摊手道,“如果你有所怀疑的话,我们可以再换一个游戏玩。”
“什么?”
“拿棋子的游戏。”李察道,说着话把棋盘拿开,抓了一把棋子,数了数一共十九个,分成三堆。
第一堆三个棋子,第二堆七个棋子,第三堆九个棋子。
“规则是这样的。”李察道,“我们两个人轮流从这三堆中拿棋子,每次都可以选择任意一堆拿。拿的棋子数量,最少为一个,最多一堆全部拿走。等到剩下的最后一个棋子谁拿,谁就输。”
顿了顿,李察看着小丑继续道:“这个游戏和五子棋不一样,但同样可以通过数学计算出来,所以先手也是必胜的。”
小丑眼睛闪了闪,盯着棋子思考了半晌:“我不信,我现在就想到了好几种后手取胜的方式。”
“既然这样,那我们试一试。”李察道,先手就从最右面九个棋子中的一堆中,拿走了五个。三堆棋子,立刻变成了“三七五”的样子。
小丑想了想拿走了最右面剩下的四个棋子,变成了“三七”的样子。
李察跟着拿走了第二堆的四个棋子,变成“三三”的样子。
小丑盯着棋子看了好半天,没有下手,看向李察问道:“我现在是不是算输了?”
“对。”李察点头,“虽然还没有出结果,但你已经输了。
现在是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:拿棋子的原形,就是分火柴,算是数学上一个经典的问题,网上有很多解答,文中的二进制解法是我在知乎一个答案上看到的,算是通俗易懂的一种——至少我能弄懂,有兴趣的同学可以和自己的身边人玩玩这个游戏,小心别挨揍就行。
话说,我突然发现,我现在比上学的时候,更喜欢学习了。是错觉吗?嗯,一定是错觉。