首页 >> 数学 >> 文章

在下面这个魔术中,主持人将请上三位观众,其中有一位观众是托儿。不过,和别的魔术不同,这个托儿非常低调,他没有任何多余的举动,在游戏规则内就把消息偷偷传递了出去。你能看出这个魔术背后的原理吗?

魔术表演的第一步是把魔术师五花大绑,眼睛套上黑布,放进麻袋里。然后,主持人请第一位观众上台,从一副扑克牌里找 16 张牌,把它们摆成一个 4×4 的扑克方阵,哪些牌正面朝上哪些牌背面朝上由观众自己决定。

摆好后,主持人说:"为了增加表演的难度,我们把 4×4 的扑克牌方阵增加到 5×5 一共 25 张,魔术师没有意见吧?"麻袋里的魔术师表示没有意见。于是,主持人请上了第二位观众。

第二位观众按照要求对桌子上的扑克牌阵进行了扩充。

主持人说,"下面呢,我们再请第三位观众上台。你在这 25 张牌里,随意挑选一张扑克牌,把它翻过来。翻的时候一定要小心,不要留下痕迹,别让魔术师一眼看出来。"

第三位观众稍微考虑了一下,把那张原来背面朝上的方片 5 翻了过来。

"好的,下面就请魔术师开始他的表演",主持人说。魔术师从袋子里钻出来,走到这堆扑克牌面前,果断地指出了被第三位观众动过的牌,众人惊讶不已。

你能看出哪个观众是托儿吗?

魔术揭秘

这个魔术的关键就是第二位观众,他就是那个"托儿",另外两位观众都是不明真相的群众。在第一位观众放完扑克牌以后,魔术师的托儿登场。表面上,托儿是在随意地扩展方阵,可实际上他放的一圈牌大有讲究。他需要保证,在最后的 25 张牌里,每一行、每一列正面朝上的扑克牌都是奇数张。

这是总能办到的。首先,在 4×4 方阵的每一行末尾添加一张牌,使得这几行里都各有奇数张正面朝上的牌。再在所得的 4×5 方阵每一列的末尾添加一张牌,使得每一列都有奇数张正面朝上的牌。此时,这个 5×5 方阵的每一列和前四行都有奇数张正面朝上的牌了。由于每一列正面朝上的牌都有奇数张,因此正面朝上的总牌数也是个奇数;同时前四行里正面朝上的牌都是奇数,从而可以推出第五行也有奇数张正面朝上的牌了。

等到第三位观众翻完牌,魔术师上场后,他需要做的就是数一数,看哪一行和哪一列正面朝上的扑克牌张数不是奇数。在上面的例子中,魔术师发现,第四行和第二列中正面朝上的牌不是奇数张,位于它们的交界点处的就一定是那张破坏阵型的牌了。

用 1 表示正面朝上的牌,用 0 表示背面朝上的牌,魔术可以用上面这个 01 方阵来表示。

奇偶校验法

其实这一招并不是魔术师发明的,这是信息学中传输数据使用的奇偶校验法。不妨让我们用数字 1 表示正面向上的扑克牌,用数字 0 表示背面朝上的牌。在电子通信上,这些 1 和 0 就可以用来传递声音、文字、图片、视频等各种东西,不过数据的传递过程中很可能会出差错,发生某一个数字正好弄反了的情况(相当于第三位观众的操作)。如果给原始信息(第一位观众的扑克牌阵)加上了校验码(第二位观众的做法),接受这些数字信号的一方(相当于魔术师)不但能知道数据有没有传错,还能自己把传错的地方给纠正过来。

不过,如果有不止一个数字被传错,这种自纠错方案就无能为力了。好在,数学家们还发明了一些更强大的自纠错校验编码,可以用于通讯信号更恶劣的场合中。

0
为您推荐

9 Responses to “数学魔术(13)托儿也能如此低调”

  1. 咩咩说道:

    如果校验码本身传递错误了呢?

    • jimmyfluore说道:

      没有完全可靠的协议,奇偶校验只能找出奇数个错误的情况。

    • watson说道:

      一般某种校验方法会标明支持纠正最多每组数据中有多少个错误,不论发生在校验码中,还是原数据中。

  2. 二狗说道:

    这个魔术之前看过耶,忘了是在松鼠还是果壳,标原创真的好吗

  3. foundera说道:

    只有一张向上怎么破?

    • xm说道:

      是啊,如果有一个观众(最先上来的)恶搞一把,把所有牌都不翻,怎么办?

  4. Illusiwind说道:

    看过一本差错控制编码的飘过……

Leave a Reply