本文是《约瑟夫问题与魔术》系列作品的第九篇,之前的作品回顾请戳:
约瑟夫问题与魔术(七)——魔术《The Australian Deal》
约瑟夫问题与魔术(五)——魔术《自我匹配的奇迹》中的数学原理
在上一篇文章里,我们讲解了魔术《四重巧合之金刚》,在创作完成这个魔术以后,自然联想到,都有金刚了,何不再用类似的原理试试同花顺呢?多了一张需要控制的牌,同时效果也是会大大增加的啊!于是有了下面的作品《五重巧合之皇家同花顺》:
视频1 五重巧合之皇家同花顺
初步创作思路
这个改进的作品是写这篇约瑟夫文章总结之前一周左右才拍定的。中间还是经历了不少困难,好在上帝还是给了我一个美好的结局。
首先,我们的期望目标变成了10~A的同花色的5张牌,也就是说,我们的周期应该是5个,每个周期的长度自然是4个花色的4最为大的理想值了。其实,所谓同花顺啊,我只是做到了同花罢了,只是这个全集恰好是10~A的全集,而观众对同花顺的理解中本来就不包含排列,只要求组合,因此,一方面数字可以随意排列,让序列看起来很乱,规律仅仅暗含在周期变化的花色中,这可比魔术《四重巧合之金刚》周期变化的数字且周期只有3的混乱度大多了;另外,在这些在观众眼里有些模糊的先验知识的帮助下(比如同花顺真的很难得),我们对魔术效果的感受比实际发生的要强上不少。
最开始一样,随便切牌得到牌叠,这里取的是这个排列群内元素在切牌操作下保持周期性的性质。这里如果发两叠同样不行,周期数是偶数4,不满足。然后拿走第一张。因为这里的周期是4了,所以每次发4张,然后4叠,最后一叠多3张置底,一共19张牌。这时候,观众选走了同花色的另一张。此时,按照和以前类似的套路,因为完整的4张牌叠有至少两个了,因此可以确定性地把牌控制在1,5,9张,前两叠放任意两叠没有被拿走的那4张的牌叠,第三叠合上没被拿走的剩下一叠就可以了。如果是从0开始索引,就是0,4,8。
创作困难和解决
接下来这个问题让我困扰了很久,18(10010)张牌,尝试了很多方法,也没有把这3张牌能一次性地给选出来。首先,第0张牌仍然沿用之前的思路,用相位为1的k= 2约瑟夫过程把它变成发出去牌的底牌,但是剩下的两个位置分别是3(100 - 1 = 11)和11(1100 - 1 = 1011),他们的距离有8,但是我手里牌的位置是4,8。4确实比较理想,可以直接切牌一张变成3;可是这个8到11就有点麻烦了,不然就会停在发出去牌的倒数第5张,很不好处理。如果对着这个再执行什么过程,看起来整个流程就太冗长了,我迫不及待地想要这一次约瑟夫发牌就能直接剩下最后两张即为所求。
我绞尽脑汁,怎么把4,8换到3,11两个位置上去。这时,如果把它们看作平面坐标上的两个点,那么对应的关系是y = 2x - 5。之所以会有这个想法,是因为我看到后者的两个位置差恰好是前者两倍,而这个2的物理意义刚好是一个整数的斜率。那怎么构造这个两倍呢?完美洗牌里面对索引的移位操作恰好可以完成这个过程!我只需要把切掉3张,变成1,5,然后进行in faro shuffle,位置就改成了1 << 1 + 1 = 11 = 3和101 << 1 + 1 = 1011 = 11。这恰好就是我需要的结果。Faro洗牌可以把距离翻倍,我们要的也正是这个效果!整个过程相当于y = 2(x - 3) + 1 = 2x - 5。
怎么样,简单的线性函数以及二进制表示数居然还能有起到这等勾起灵感的作用,岂不妙哉!
回到具体操作上,而切掉3张的方法直接用单张的overhand shuffle洗到底部即可,此时,原来要用来放置于顶牌的牌成了底牌,不那么理想了,但好歹还在我们的控制之中。然而最后这个in faro shuffle的时候只需要对牌叠再从底部发一次,因为conut操作的原因,就又可以回到顶部了!甚至,这里还可以让观众来自行选择发多少张来进行这个完美洗牌!
这一系列的操作,每一个都很基本,简单,但合适地组合起来就可以发挥巨大的威力,这像极了小孩子拼乐高,也像极了程序员用基本的api用算法拼成的代码。
完美收尾,盖棺定论
设计到这里,我是兴奋的,因为原本一个看起来不可能完成的流程慢慢已经显出了雏形。现在,因为牌叠设置,观众可发牌的数量必须在6~12之间,太少了会达不到翻倍,太多了,直接把第8张给发走了。最后一个问题便是,如何让观众乖乖地,但是又感觉自由地选到这个长度为7的区间呢?
什么,长度为7?还记得这个神奇的数吗?还记在第一个《10张牌的巧合》这个魔术里,我给大家介绍的那个必然落入区间的跳蛙原理吗?没错,这里池塘的长度有7,完全可以让观众选一个星期数,如果是6和7,直接结束;如果不是就再让另一个人选一个。当然可以一直进行下去,直到进入为止。但这里显然还有更好的处理,比如,你可以在选了两个人以后他们的和都不够6的时候,直接说,一周有7天,然后顺势发出7张,再发他们两人最大为5的数,仍然落在了相应区间里。相当于前置地替他们跳了最大的一步,确保最后一步落在区间里。另外,关于星期日到底是一周的第一天还是最后一天的不同说法,也可以作为一个由魔术师来掌握最终解释权下的灵活调整。总之,魔术师想要办到什么事,向来就默默地做完了,而且从来不和你打招呼。软限制的魔术技巧总是很有魅力(术语也可以叫multi-outs)。
而且在这设计过程和表演中我感受到,人其实自然状态是很感性的,没有道理的,程序员除了写程序的时候也是这样。所以,还有大把的能在这个领域发现美的地方!
当我完成了这个流程的编排时,又一次体会到了这种数学魔术独有的创作快感,希望能把这份快乐,也多分享给你看。
本篇到此结束,本系列还剩下最后一个魔术,下期揭晓,先睹为快:
视频2 完全控制
我们是谁:
MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴赏等魔术内容;以及结合二者的数学魔术分享,还有一些思辨性的谈天说地的随笔。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎扫码关注和在文末或公众号留言与我交流!
扫描二维码
关注更多精彩
《猫和老鼠》里的魔术艺术(五)——一定要合理!
点击阅读原文,往期精彩不错过!