《華爾街日報》——麻將的模塊化玩法
Eugenia Cheng
插圖:托馬斯·瓦倫塔我與家人打麻將迎接新年。我們玩的版本開始時,由一人擲三顆骰子,然後根據骰子總數在四位玩家圍坐的桌面上按順序數數。從“一”開始數,即自己為“一”,我從小還學了一些口訣,比如“九自手”“十三自手”,這些是從祖父母那裏傳下來的。這樣,如果骰子數字較大時,就不必一直數下去。我現在知道,這實際上是數學中的模運算。
有時它被非正式地稱為鐘錶算術,因為它類似於我們如何報時:當我們數到12時,又從1開始,所以13“等同於”1,14“等同於”2,以此類推。這被稱為“模12”算術,但我們也可以用其他數字代替12。
麻將中使用的是模4運算,因為數完四位玩家後,你又回到了自己,所以5和1落在同一個人身上;同樣,9、13和17也是如此。如果我們使用24小時制,我們進行的是模24運算,而不是模12。星期幾的循環類似於模7運算,儘管我們不用數字命名它們;音樂音符用字母A到G命名也是如此。
模運算是關於餘數的算術,因為我們本質上是在做除法,然後只關心餘數是多少。帶餘數的除法通常是小孩在學習分數之前學習除法的方式,乍一看,分數似乎是一種更復雜的工具。畢竟,分數使我們能夠將任何數字除以任何其他數字(零除外),而不會有剩餘。
然而,模運算的力量令人驚歎,尤其在密碼學和其他計算機應用中。國際標準書號(ISBN)讓我們能通過編碼識別每一本出版書籍。現行使用的編碼包含13位數字,其中最後一位是“校驗碼”,通過模運算計算得出。具體來説,它是將第一位數字、第二位數字乘以三、第三位數字、第四位數字乘以三,依此類推直至第12位數字相加;然後校驗碼的作用是使總和模10等於零(即無餘數)。其原理在於,當你向計算機輸入ISBN時,它能快速通過該計算檢查是否存在輸入錯誤,並在總和有餘數時標記異常。雖然這不是萬無一失的糾錯機制,但能捕捉單數字錯誤和大多數相鄰數字順序顛倒的情況。
我自己有時也會用模10運算作為基礎錯誤檢查工具。如今我通常在手機計算器或電子表格中求和,但若想快速驗證結果,我會將所有數字的末位相加,然後核對結果的最後一位。由於我們使用十進制計數,數字的末位即其模10的結果,因此這本質上是通過模10運算驗證答案。和ISBN校驗碼一樣,這種方法並非絕對可靠,但總比完全不檢查要好。
密碼學需要更復雜的系統來實現信息加密與精確解密,而不僅限於基礎有效性驗證,但許多系統仍以模運算理論為基礎。我尤其欣賞純粹數學中對簡單概念的巧妙運用——比如模運算,其簡潔性甚至能讓孩童在家庭遊戲中輕鬆使用。