复原小时候见过的数学魔术

今年我为北京世纪坛的数学益智游戏展贡献了不少内容。我打算在这里记录一些自己的创作、发现、收获和心得。顺便结合一下这几年的经历。这是该系列的第一篇。

有一个经典的数学小魔术。把 0 到 63 之间的数写在 6 张纸条上,其中第 1 张纸条上写着二进制表达中右起第 1 位数字为 1 的数,第 2 张纸条上写着二进制表达中右起第 2 位数字为 1 的数,第 3 张纸条上写着二进制表达中右起第 3 位数字为 1 的数,等等。给人展示 6 张纸条,问他“你的年龄出现在了哪些纸条里”。对方给出的答案就相当于告诉了你,他的年龄的二进制表达中各个地方是 0 还是 1。你就能报出他的年龄了。

今年的展会有一个主题就是过年。我们打算设计一个类似的小魔术,只不过把年龄改成生肖。由于生肖有 12 个,因此 4 张纸条就可以做到这一点。


为了让魔术能自动呈现出来,不需要工作人员表演,我们想到一个方法。把 4 张纸条换成 4 对带孔的板子,不妨把这些板子记作 1A、1B、2A、2B、3A、3B、4A、4B。墙上印有和板子一样大的海报。海报上印有十二生肖,排成一个 3 × 4 的方阵。我们事先给每个生肖分配了一个 0000 到 1111 之间的编号(所以 16 个编号只用到 12 个)。分配的时候顺序故意是乱的,这样板子上的孔更没规律,魔术效果更好。板子 1A 上印着右起第 1 位是 0 的生肖,并且这些生肖对应的位置开孔。板子 1B 上印着右起第 1 位是 1 的生肖,并且这些生肖对应的位置开孔。类似地,后面几对板子就分别用于确定生肖的右起第 2 位、第 3 位、第 4 位。所以,每一对板子上印的生肖和孔的位置都是互补的。来宾只需要按照规则,从每一对板子里选出有他生肖的那一个,再把 4 个板子重叠起来,覆盖在海报上。这个人的生肖就会从唯一的公共孔洞中露出来。

为了在展板上解释魔术的原理,并且让不熟悉二进制编码的来宾也能弄明白,我准备了下面的文字。

让你的朋友在心里想一个 1 到 16 中的数。怎样问 4 个问题,就能知道他心里想的数是多少?
 
其中一种办法就是,把 1 到 16 排成一排,然后问对方“你想的这个数在前半段还是后半段”,即“你想的这个数在 1 到 8 当中还是在 9 到 16 当中”。如果对方回答“前半段”,或者说“在 1 到 8 当中”,你便可以继续询问“你想的这个数在这 8 个数的前半段里还是后半段里”,即“你想的这个数在 1 到 4 当中还是在 5 到 8 当中”。不断询问这个数在剩余部分的哪半段里,就能不断把这个数的嫌疑范围缩小到原来的一半。最开始有 16 个数,询问 4 次后,就能锁定这个数了。
我们有一个更酷炫的方式完成这个过程。在纸条上间隔相等地写上 1 到 16 中的数,然后准备 8 块和纸条一样大的板子。每块板子上都开了 8 个孔,对着纸条上的其中 8 个数。
 
1A: ○○○○○○○○−−−−−−−−
1B: −−−−−−−−○○○○○○○○
2A: ○○○○−−−−○○○○−−−−
2B: −−−−○○○○−−−−○○○○
3A: ○○−−○○−−○○−−○○−−
3B: −−○○−−○○−−○○−−○○
4A: ○−○−○−○−○−○−○−○−
4B: −○−○−○−○−○−○−○−○

如果对方第一次回答的是“前半段”,就拿起 1A 板;如果对方第一次回答的是“后半段”,就拿起 1B 板。这样,对方心里想的数就一定在板子上打了孔的位置里。
 
不管对方第一次回答了什么,如果对方接下来回答“前半段”,都表明他心里想的数在 2A 板上打了孔的位置里。不管对方第一次回答了什么,如果对方接下来回答“后半段”,都表明他心里想的数在 2B 板上打了孔的位置里。你就从 2A 板和 2B 板中挑出正确的那一个。
 
总之,对方每次答“前半段”,你就选下一组板子中的 A 板,反之就选 B 板。孔的位置就记录了每次回答表示这个数有可能在哪儿。把所有板子重叠在一起,放在纸条上。透过所有的孔能看到的,就是对方心里想的数了。
 
当然,我们可以把 1 到 16 改成 1 到 12,只是纸条上的末 4 个数成了摆设,永远不会出现罢了。数也不一定按顺序排成一排,你可以随机地把它们排成一个方阵(当然板子上孔的位置也要跟着挪动)。我们要猜的也不见得是数,可以是很多别的东西,比如十二生肖。这就是猜生肖魔术背后的原理。

实际实施时,发现效果并不好。板子太多,很容易乱,特别不好操作。由于每一对板子是互补的,所以 4 块板子提供的信息量就够了,8 块板子的设计感觉有冗余,应该能精简。我隐约想起小时候看某本数学书,上面介绍了一个类似的魔术,但二进制编码的每一位不是靠 AB 板子确定的,我记得好像是靠板子正放还是倒放确定的。忘了是因为那本书上根本没讲原理,还是没讲特别具体,还是我没看懂,反正这个魔术我是知其然,不知其所以然。我一直耿耿于怀。现在机会来了。现在的我能把小时候的这个悬案解开吗?

容易想到,这本质上要求原来的设计中,每一对板子的其中一个倒过来就是另外一个。也就是说,12 个二进制编码在 3 × 4 的方阵中的分布需要保证,不管看右起哪一位,0 所在的位置和 1 所在的位置互相中心对称。抓住这一点,很快就能设计出来了。效果很不错。这就是展会上实际使用的道具。4 块板子中,有自己生肖的就正着放,没有的就倒着放。重叠起来后,通过孔洞就能看到自己的生肖。

展板上的文字也换成了下面这样。

字母 A 还是字母 B?大写还是小写?红色还是蓝色?下面要不要下划线?每一项都可以选择前者或者后者,这样就能组合出 16 个不同的符号。如果两个符号中,一个是 A,一个是 B,一个大写,一个小写,一个红色,一个蓝色,一个有下划线,一个没下划线,我们就说这两个符号是一对。

从 16 个符号中选择其中 6 对,摆成一个表格。每一对都摆在两个中心对称的位置。所以,最左上角的符号和最右下角的符号是一对,第二行第一列的符号则和倒数第二行倒数第一列的符号是一对,等等。于是,方阵中恰好有一半的字母 A,一半的字母 B,而且它们对称分布在方阵中。如果准备一张和方阵同样大的卡片,在有字母 A 的地方挖个洞,把卡片倒过来,洞就正好对着所有的字母 B 。看看大写字母和小写字母的位置,你会发现它们也是同样的关系。所有的红色和蓝色,以及有下划线的和没有下划线的,也都是如此。这就能得到四张带洞的卡片。
 
如果你随便选了方阵里的一个符号,为了得出你选的符号是什么,只需要知道你选的符号是 A 还是 B,是大写还是小写,是红色还是蓝色,以及有没有下划线。如果你选的是 A,第一张卡片就正着;如果你选的小写,第二张卡片就倒着;如果你选的红色,第三张卡片就正着;如果你选的有下划线,第四张卡片就正着。这样,每张卡片上有洞的位置,都是满足这个要求的符号的位置。重叠在一起后,就能找到满足所有要求的那个符号了。
 
猜生肖魔术背后的原理就是这样,只不过每个符号都替换成了生肖。例如,不带下划线的蓝色大写字母 B 就是鼠,带下划线的红色大写字母 B 就是牛,等等。这不会影响最终的效果。

没了。没啥结语。加这一段主要的原因是拿引用框结尾看起来不好看。

11 条评论

回复给 localhost 取消回复

  +  7  =  16