在本系列前面的文章中,我们讲清楚了约瑟夫问题的基本原理以及三个魔术的应用,相关文章请戳:
约瑟夫问题与魔术(六)——《自我匹配的奇迹》魔术赏析
约瑟夫问题与魔术(五)——魔术《自我匹配的奇迹》中的数学原理
约瑟夫问题与魔术(四)——魔术《10张牌的巧合》
约瑟夫问题与魔术(三)——终极数学推导
约瑟夫问题与魔术(二)——数学结构解析
约瑟夫问题与魔术(一)——数学模型求解
尤其是上一个魔术《自我匹配的奇迹》,堪称佳品,今天我们继续来看一个经典作品,看看其背后的数学原理深挖以及魔术包装的思路。最后,我们根据这个思路,设计了自己的作品。
The Australian Deal
先看表演视频。
视频1 The Australian Deal
魔术原理解析
这个魔术来自Steve Beam的Semi-Automatic Card Tricks vol2,我几乎原封不动地搬了过来,书中并没有讲太多关于其数学原理的设计,毕竟是本魔术书,但我相信其设计者肯定是深谙其道的。总的来讲,这类魔术还是很蒙的,因为和传统扑克牌魔术需要很多手法啊,引导等来辅助完成不同,其破绽之处是一个一般人很难定位到,即使定位到也很难短时间内相信和明白这个道理的,这也是数学魔术之迷人,其设计占了绝大多数的贡献,剩下的包装反而是更轻松的事。
另外,书里提到这类流程的时候,特意提到了我们要尽量让过程简短,有趣,把原本冗长的缺点变成一个有机的互动过程,比如增加节奏感,编故事等使得这个过程有所意义。我认为这的确是所有数学魔术,或者说自动化魔术非常关键的一环,在所有的设计和思考中要随时牢记在心。
如果你觉得效果不错,那还要什么解析,拿来用就是了!
数学原理解析
我们有了约瑟夫问题的求解公式,尤其是k = 2时候的特殊情况后,其实就数学魔术设计来讲,就可以忘记那个繁杂的推导,来直接想想怎么应用这个原理了。我们给出了最后牌位置的二进制表示,是张数n = 1b1b2……bm得到的最后一张位置为n << 1(m 1) =b1b2……bm0(索引从0开始,括号内表示的是个m 1位的不循环移位,超过位数自动溢出);如果相位为1,则直接等价于去掉一张后的过程:只要bi = 0不都成立,那就是b1b2……bm0 – 1,否则就是等价于n = 1…1,共m个。
虽然写成了二进制形式以后有看起来很美好,但实际上这里如果让你口算一些情况,在我们背的是十进制的各种运算法则的情况下,虽然二进制的想都能想明白,但编码不熟,位数太多,到具体数数的时候我们还得转化为十进制才能愉快地进行(不信你用二进制从1数到1000看看费不费劲)。我们其实需要更深入一点挖掘一下这个公式的物理意义,尽量能够抛开进制的影响,一方面是挖掘其在序列上的意义,另外也是在想一些能够更好利用该性质的策略。
上一个魔术《自我匹配的奇迹》中,我们在推导相关原理时,提到了该公式的一个变体:
b1b2……bm0 == b1b2……bm0 – 2 * 1b1b2……bm (mod 1b1b2……bm)
== - 2 ^ (m 1) (mod 1b1b2……bm)
即约瑟夫最终牌的位置是负2的次幂,次幂值是该叠张数的位数。
等等,这位置索引不都是从0开始的自然数么,咋搞出负数来了?在后面取模又是什么意思?而且,这个数的绝对值,好像已经超过牌的张数了?这是在干嘛?为什么要这样,而且可以这样写?
一切都因为,扑克牌叠内每一张的索引变化,在切牌这个操作下,是个循环群,它和我们总结的整数模n加法群是同构的,因此其上的相等关系,其实也就是模n意义上的相等。a和n a,2n a,3n a以及a - n,a - 2n等等其实是同一个数的不同代表元素,mod n意义下是相等的。特别的,当索引值为负,且绝对值不超过n的时候,有一个很直接的物理意义,就是序列从最后一张开始,以1起始递增计数值的相反数。原因也很简单:
n - a == - a(mod n)
上式显然成立,而两个索引的绝对值之和恰好是n,也反映出序列索引的对称性,即:关于n / 2对称的两个n以内的正数索引值(和为n)在其中一个相反数以后能够指向同一个位置。
扑克牌叠其实一开始很难理解为什么要把底牌和顶牌的关系强行理解为上下相邻,其实你看下切牌操作就明白了,经过一次切牌,顶底的伪相邻关系都会重新恢复,真的相邻关系也随时可能被切到顶底关系。因此,顶底关系实际上和相邻关系共同组成一种“前后”关系,包括了二者,共享着同样的结构和性质。同时,因为这个区分,和任何元素上的区分一样,给序列提供了起点和终点,就像给对称图案染色以后,给出了具体是对称图案中的哪一个。这时再去变换它,就能够观察区分不同状态,同时意识到,如果没有颜色,这些都是完全重合的。
回到魔术设计上。对于任意张数n,2 ^ (m 1)还有一个特点,一定在n和2n之间(二进制的左移位代表的是乘以2,了解这一点就很容易证明了),因此,选牌应该的有效范围内索引位置应该是倒数第l = 2 ^ (m 1) – n张。
看到这个减n不知道你有没有感觉了,我们想个办法把原张数n带上,然后因为m在一定范围内可以看作常数,加一些软限制,就能构造出恒等式了。
比如这里,让观众通过两张牌点数和选了n,然后迅速找到m,其实也很好找,就是2的次幂中第一个比n大(不能相等,负索引从- 1开始的)的数就行了。算出需要控制的索引位置为倒数l = 2 ^ (m 1) –n张,这意味着我们一叠一叠发牌下去,每叠张数都是x的话,那原来的顶牌自然就是倒数x张了。而这个数牌每几张一数实在是几乎没有任何破绽,看起来真的是太随意的过程了,几乎把这本就藏得很深的秘密线索都捂住了,妙!
当然,如果刚好这个l和n不互质,甚至有l | n,这时候能够通过几次不翻转后再翻转的数牌,或者直接就是按l张翻转的数牌来完成结果。如果互质的话,或者最大公因数相比l和n都太小,那么直接无视,选择拆解l的因子,然后发那么多叠不翻转的数牌,然后再去硬凑n好了,这时只要l - n还能够有几个该因子,再凑,就还算好了,不然,也会让人觉得是个奇怪的动作。
My Australian Deal
一边看着这个流程,一边我也在有别的构想。因为这里最后倒数l张无非是说倒数长度和整叠牌长度的和为2的次幂嘛。所以还有一个可行的思路便是,先取出2的次幂来,比如32张(直接取或者通过关键牌加riffle force等等),分成两叠,少的那一叠数一下多少张,记为l,扔掉。多的自然是满足位数的牌叠,洗牌,看底牌。此时我们要让这张底牌称为倒数l张。
COAT啊,COAT了l张以后,底牌会变成倒数l 1张,就差1个位置了。相当于往前放了一张。不过令我兴奋的是,往前移动一张恰好是相位为1的约瑟夫问题对应的解!或者你想啊,什么时候会往前移动1张?不就相当于已经做了一步under,直接进入down的等待状态了吗?
直接看表演吧!
视频2 My Australian Deal
一气呵成,好不快哉!
这下你相信,明白了数学魔术真正的核心数学逻辑,再加一点点魔术灵感,就是进行魔术创作的基石了吧?
嘿嘿,这个魔术我不往下再讲了,相信点到这里,聪明的你,已经领略到这里数学和魔术结合的无尽魅力了。
下一篇将要介绍的魔术,先睹为快:
视频3 四重巧合之金刚