4

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

 1 year ago
source link: http://www.matrix67.com/blog/archives/7135
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

有一个经典的数学小魔术。把 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 块板子中,有自己生肖的就正着放,没有的就倒着放。重叠起来后,通过孔洞就能看到自己的生肖。

202301292.png

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

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

202301291.png

从 16 个符号中选择其中 6 对,摆成一个表格。每一对都摆在两个中心对称的位置。所以,最左上角的符号和最右下角的符号是一对,第二行第一列的符号则和倒数第二行倒数第一列的符号是一对,等等。于是,方阵中恰好有一半的字母 A,一半的字母 B,而且它们对称分布在方阵中。如果准备一张和方阵同样大的卡片,在有字母 A 的地方挖个洞,把卡片倒过来,洞就正好对着所有的字母 B 。看看大写字母和小写字母的位置,你会发现它们也是同样的关系。所有的红色和蓝色,以及有下划线的和没有下划线的,也都是如此。这就能得到四张带洞的卡片。

如果你随便选了方阵里的一个符号,为了得出你选的符号是什么,只需要知道你选的符号是 A 还是 B,是大写还是小写,是红色还是蓝色,以及有没有下划线。如果你选的是 A,第一张卡片就正着;如果你选的小写,第二张卡片就倒着;如果你选的红色,第三张卡片就正着;如果你选的有下划线,第四张卡片就正着。这样,每张卡片上有洞的位置,都是满足这个要求的符号的位置。重叠在一起后,就能找到满足所有要求的那个符号了。

猜生肖魔术背后的原理就是这样,只不过每个符号都替换成了生肖。例如,不带下划线的蓝色大写字母 B 就是鼠,带下划线的红色大写字母 B 就是牛,等等。这不会影响最终的效果。

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK