《华尔街日报》——麻将的模块化玩法
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校验码一样,这种方法并非绝对可靠,但总比完全不检查要好。
密码学需要更复杂的系统来实现信息加密与精确解密,而不仅限于基础有效性验证,但许多系统仍以模运算理论为基础。我尤其欣赏纯粹数学中对简单概念的巧妙运用——比如模运算,其简洁性甚至能让孩童在家庭游戏中轻松使用。