Day28 從象棋比賽作弊事件探討資料傳輸與資料結構 === 今天來做個嚴肅的學術探討,看標題就知道,今天肯定是個非常嚴肅的主題,我們要用學術角度來探討去年知名的象棋比賽作弊事件,**讓我們通過電腦對局所學到的知識,充分的應用到生活之中。** ![image](https://hackmd.io/_uploads/HkNbipPy1x.png) 去年底的時候一篇標題為『 **[陸「民間棋王」賽後浴缸排泄!遭質疑塞肛珠作弊](https://www.ettoday.net/news/20231226/2650870.htm)** 』的新聞引爆了ptt的C_Chat版,對此新聞的討論超過了20篇,接著我們就來深入探討一下這個事件。 我會按照研究背景、可行性評估、研究目的、文獻探討、研究方法與步驟、實驗結果,依序分享。 ## 研究背景 ### 浴缸門 2023年12月17日大陸河南棋手顏成龍參加2023年全國象棋民間棋王爭霸賽,戰勝吉林棋手張偉,拿到總決賽冠軍並獲得獎金10萬元(人民幣)。 但是賽後,顏成龍從飯店退房後,工作人員發現**浴缸非常渾濁,疑似有排泄物**。 這件事本來也沒什麼,大家可能就只是覺得這名棋手有點沒道德,為什麼要在浴缸裡拉屎,但有自媒體猜測顏成龍在**比賽時使用了「肛珠」作弊**,需要在浴缸裡把「肛珠」排出並清洗。 這一下就在網路上流傳開了,各種陰謀言論四起,雖然無從證實是否有作弊,但中國象棋協會還是將顏成龍的獎項、獎金取消,並且禁賽一年。 > 棋手通過在肛門裡藏入可收發訊號的智慧型肛珠作弊,通過括約肌有節奏張弛收縮來傳遞資訊。 這麼誇張的事情真的有可能做到嗎? ### 起源 我查了一下最早有這種所謂肛珠作弊的新聞應該是從西洋棋開始的,[新聞來源](https://www.epochtimes.com/b5/22/10/9/n13841980.htm)。 世界棋王**卡爾森(Magnus Carlsen)** 在一次比賽中爆冷輸給了美國新秀 **尼曼(Hans Niemann)**,終止了卡爾森的53連勝紀錄,隨後卡爾森也直接退賽。 下圖左邊為卡爾森,右邊為尼曼。 ![image](https://hackmd.io/_uploads/rkYL7xO1yl.png) [圖片來源](https://today.line.me/tw/v2/article/JPogeDy) 卡爾森退賽後在推特上影射對手作弊,於是網路上開始有人思考各種作弊方式,其中討論最熱烈的就是所謂的「肛珠」了,連**馬斯克(Elon Musk)** 都在自己的推特轉發此新聞,並且引用了一段名言並加上了自己的見解(cause it's in ur butt): ![image](https://hackmd.io/_uploads/HkwNIgO11g.png) 真的是嘲諷至極,從此「肛珠」作弊就在西洋棋界中傳開來了。 ### 圍棋作弊事件 其實早在2018年圍棋比賽中就有出現一些作弊的事件了,比如中國知名業餘棋王胡煜清事件,[新聞來源](http://www.eweiqi.com/index.php?m=content&c=index&a=show&catid=206&id=29617)。 業餘棋王胡煜清在某次比賽中突然爆冷輸給了一位叫劉超(此為報名比賽的假名,真名為劉哲)的無名棋手,胡煜清當時在自己的朋友圈發出棋譜,感嘆自己老了,居然被沒有聽過的棋手,整盤棋輾壓一點機會都沒有,但是經過使用AI輔助覆盤,發現**對手的招法與AI吻合度將近百分之百**,以當前2024排名世界第一的申真諝來看,吻合度最高大概也就70%左右,這自然引起了大家的懷疑。 從下圖可以看到這位棋手下棋時都將手機放在胸前的口袋,並且鏡頭朝向棋盤。 ![image](https://hackmd.io/_uploads/ByEmFeOJ1g.png) [圖片來源](https://www.hk01.com/%E5%A4%A7%E5%9C%8B%E5%B0%8F%E4%BA%8B/181896/%E6%B1%9F%E8%98%87%E7%B4%A0%E4%BA%BA%E6%A3%8B%E6%89%8B%E5%88%A9%E7%94%A8ai%E4%BD%9C%E5%BC%8A%E6%88%B0%E5%8B%9D%E6%A5%AD%E9%A4%98%E6%A3%8B%E7%8E%8B-%E4%B8%8A%E4%BA%A4%E6%89%8B%E6%A9%9F%E5%BE%8C%E5%86%8D%E5%B0%8D%E9%99%A380%E6%89%8B%E5%B4%A9%E7%9B%A4) **注意他的坐姿,後面有彩蛋。** ![image](https://hackmd.io/_uploads/SyaYKlOykx.png) 後來主辦單位請劉超將手機收起來,結果之後劉超的表現判若兩人,很快就輸掉了下一場比賽,最後還直接棄權了。 ### 德州撲克J4o事件 這應該也是前幾年德州撲克圈最有名的一手牌了,簡單說就是Robbi在一手不可思議的牌中用J4o(J跟4不同花)去抓了Garrett的炸唬,被Garrett指控作弊。 這件事至今仍是眾說紛紜,畢竟他只有一手牌,沒有像是Mike Postle事件之類的讓大家這麼篤定,這邊提出來只是覺得艾倫哥哥在影片中提到的**震動**非常有趣,大家可以去看看影片。 ![image](https://hackmd.io/_uploads/HkS8ilOJyg.png) 圖片擷取自[賭場作弊詐賭嫌疑新發現! 震動的級數對應不同的暗號!?](https://youtu.be/cGm4HSGmHcA?si=tEY8sbwdLchhx4hs) **免責聲明:我沒有要評論上述的所有人有沒有作弊,只是要探討關於傳輸訊號的方式,畢竟我們這是很嚴肅的學術探討。** ## 可行性評估 接著我們就來評估一下是否真的有可能通過所謂「肛珠」來作弊呢? 這看著匪夷所思的事情還真的有國外youtuber實際示範了。 ![image](https://hackmd.io/_uploads/SyiL1Wu11g.png) 圖片擷取自[We Used An Adult Toy To Beat A Chess Grandmaster](https://youtu.be/AqqQ-xNAcCw?si=plTpEvrxRtLic0cu) 影片中是使用情趣用品,通過振動來表達棋盤座標,藉此方式來傳遞訊號。 比如移動d2的小兵到d4,就是先震動4次停一拍再震動2次,表示要移動的棋子,接著震動4次停一拍再震動4次,表示要移動到的位置,以下將此方式稱為**座標法**。 ![image](https://hackmd.io/_uploads/ByBw800RA.png) 圖片擷取自[維基百科](https://zh.wikipedia.org/zh-tw/%E5%9C%8B%E9%9A%9B%E8%B1%A1%E6%A3%8B) 彩蛋:影片中的主角面色凝重並且坐姿似乎與前面的某人的坐姿有點相似,~~看到這裡我好像懂了點什麼~~。 ![image](https://hackmd.io/_uploads/H1D5eWuJke.png) 看完西洋棋我們再回頭看看象棋,西洋棋是8x8的棋盤,象棋則為9x10: ![image](https://hackmd.io/_uploads/ry-ffWdy1e.png) 從影片中看起來這種作弊方式似乎是可行,但是得優化傳遞訊號的方式! 假設每個棋子移動的機會相等,那**平均每走一手棋就需要震動20次**,而且象棋一盤棋的平均手數也比西洋棋要更多一些,所以如果象棋想用跟西洋棋一樣的座標法,估計棋手本人會先~~肛裂~~體力不支。 ## 研究目的 我們需要更為有效的方式來傳遞訊息,**減少震動次數,防止肛之棋士的括約肌受傷**。 ## 文獻探討 這裡實在是找不到相關的論文,所以我參考了ptt上各位鄉民大神的發文,以下提出幾個作為探討。 ### 方法1 老祖宗的智慧 [Re: [新聞] 陸「民間棋王」賽後浴缸排泄!遭質疑塞肛](https://www.ptt.cc/bbs/C_Chat/M.1703567961.A.0A4.html) 這名網友提出了使用[中式記譜法](https://zh.wikipedia.org/zh-tw/%E8%B1%A1%E6%A3%8B#%E4%B8%AD%E5%BC%8F%E8%A8%98%E8%AD%9C%E6%B3%95)來表達棋子的移動,如下圖我幫大家圈出重點了。 ![image](https://hackmd.io/_uploads/SynTLbdkyg.png) 通過中式記譜法,將座標法平均20次的震動縮減到了13次。 這個方式其實有很多的空間浪費,在中式記譜法中的四個字的可能性有: 7 x 11 x 3 x 9 = 2079種 但是卻使用13碼來編碼,用了 $2^{13} = 8192$ 來表達2079種走法,顯然還有很大的改進空間。 ### 方法2 情趣用品大師? [Re: [新聞] 陸「民間棋王」賽後浴缸排泄!遭質疑塞肛](https://www.ptt.cc/bbs/C_Chat/M.1703588431.A.29F.html) 這是我在ptt上看到震動次數最少的做法了,但是... 這名網友說要捨棄棋盤式的絕對位置思考,改用相對位置思考。 提出了5種震法?! ![image](https://hackmd.io/_uploads/HkmuB-_kye.png) 最後4~6震就可以表示走法。 ![image](https://hackmd.io/_uploads/r115BW_JJe.png) 簡單分析一下 $5^6 = 15625$ ,這比方法1還離譜,而且括約肌真的有辦法感受出這五種不同的震法嗎? 如果有親身實驗過的人一定要留言告訴我。 ### 方法3 摩斯密碼 有位網友在很多篇文章底下都有推文,分享他的摩斯密碼法,所以這邊也來探討一下。 ![image](https://hackmd.io/_uploads/Bkg1Uc-OJ1x.png) 我只能說這名網友對摩斯密碼可能有點誤解或是諜報影片看太多了。 我們先來看一段摩斯密碼 ![image](https://hackmd.io/_uploads/SJe5ibuJ1l.png) 但是根據不同的停頓方式會表達出不同的意思。 ![image](https://hackmd.io/_uploads/S1-Kibd11l.png) 參考下圖,字元內部的停頓是1拍,字元之間的停頓是3拍,單詞之間的停頓是7拍。 ![image](https://hackmd.io/_uploads/r1fzo-u1Jl.png) 圖片來源[Morse code](https://en.wikipedia.org/wiki/Morse_code) 所以要正確區分出傳遞的暗號,你的**括約肌還得要打節拍**,而且比座標法更難,不是停一拍而已,而且舉例的是兵四平五,兵只有兩碼,如果改成馬那就是四碼,如果改成什麼馬三進四就會得到摩斯密碼法中的**worst case 16碼**,還多此一舉將棋子與走步轉換成其他暗號。 ### 方式4 走步轉換法 [Re: [新聞] 陸「民間棋王」賽後浴缸排泄!遭質疑塞肛](https://www.ptt.cc/bbs/C_Chat/M.1703595379.A.FE9.html) 這是我從ptt看到最佳的做法,通過對所有走法編號,這樣就**只需要震7次**,只使用了7個bit,$2^7 = 128$ 比中式記譜法還要好。 ![image](https://hackmd.io/_uploads/BkqVyM_Jkl.png) ![image](https://hackmd.io/_uploads/rkbAkf_k1x.png) 那為什麼可以做到比中式記譜法還好呢? 這邊就**跟前幾天殘局庫的壓縮原理相同**了,他的index就代表了哪個棋子要走什麼走步,假設算出來index是79,就查表發現79是砲往前2格,這邊的查表等於是查你的記憶,所以原po才會說有點難背,因為你**需要將119種走法的編號都背下來**。 ### 其他方法 我覺得很多網友都還蠻有創意的,大家可以去看看。 * [編碼大師](https://www.ptt.cc/bbs/C_Chat/M.1703607941.A.2C3.html) * [10震法](https://www.ptt.cc/bbs/C_Chat/M.1703566544.A.866.html) ## 總結 這篇真的是學術探討。 今天分享了各種作弊事件與編碼方式,明天再來繼續分享研究方法跟實驗結果,我參考了很多網友的想法提出了一個新的編碼方式,大家也可以想一想該怎麼編碼比較好。 這張圖不能只有我看到... ![image](https://hackmd.io/_uploads/B1TtzGuykx.png) [龍王的工作](https://www.ptt.cc/bbs/C_Chat/M.1703654384.A.28D.html)(慎入)