魔术里的集合、映射和关系(九)——硬核之作《双人扑克感应》魔术赏析

2023-10-16 21:40

本文主要是介绍魔术里的集合、映射和关系(九)——硬核之作《双人扑克感应》魔术赏析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在前面的系列文章中,我们从集合,映射和关系的数学概念说起,已经谈到了3个相关魔术的应用。前两个是集合语言来描述的,上一个已经进入了函数部分。相关内容请戳:

魔术里的集合、映射和关系(八)——硬核之作《双人扑克感应》中的数学

魔术里的集合、映射和关系(七)——情怀之作《连环预言》的魔术魅力

魔术里的集合、映射和关系(六)——情怀之作《连环预言》的数学模型

魔术里的集合、映射和关系(五)——优雅之作《4 Kings 折纸》的集合描述

魔术里的集合、映射和关系(四)——优雅之作《4 Kings 折纸》魔术赏析

魔术里的集合、映射和关系(三)——关系和映射的关系

魔术里的集合、映射和关系(二)——集合怎么用?

魔术里的集合、映射和关系(一)——集合是个啥?

今天我们接着上一篇,继续来分析《双人扑克感应》这个魔术里的魔术设计点。同样非常精彩,要知道,这么硬核的数学原理要表演出来得不着痕迹,是数学魔术艺术设计最具有挑战的部分。

先回顾一下表演视频:

视频1 双人扑克感应

魔术解析

 

数学部分上一讲已经分析完了,本篇进入魔术环节,大家可以松一口气了,

不过还想问一句,发现了魔术里斐波那契数列的影子了吗?

 

嗯嗯,没发现才是对的哈,不然,一个魔术看完以后脑子里留下的是斐波那契数列这样无聊的东西,那魔术还有啥好看的?

 

这个作品的原版,包括这里用到的数学原理,都出自Colm Mulcahy的大作《Mathematical Card Magic》中,在书中的第2,3,4章中,从很多角度利用数的排列组合来构造了很多效果。其中涉及的数学结构不乏今天的一一映射,以及常函数等各种内容,也包括少量当数学性质并不完美时候的魔术补救讲解,十分精彩。

不过吧,看起来篇幅有点长,没点耐心还真难一点点看进去。

视频里这个利用斐波那契数列构造的一一映射的原理就出自这本书里面的Little Fibs Principle。说的就是这里关于从斐波那契数列中取两个数的组合相加函数的可逆性:

an是斐波那契数列,有两个不同的索引集合{i1, i2}, {i3, i4},即,对任意i1, i2, i3, i4的索引,不失一般性,设ai1 < ai2, ai3 < ai4,有排列(i1, i2) != (i3,i4)此时,以下式子成立:

 

ai1 + ai2 != ai3 + ai4

 

书中也有相应的原版流程,看得出来是在很努力地把一个数学魔术表演得尽量有趣了,比如摆成一个时钟的形状,和时间相关联等等。但是,作为一个拿出来给专业魔术师来表演的作品,总感觉还差了点什么。于是就有了我上面表演的这个版本,主要考虑以下几方面:

1. 从6张牌中间去选两张,这件事是比较奇怪的,所以要想办法把6变得随机,好像只是分出来两叠中的一叠而已,比如这里就采用了很聪明的setting去做到一个必然的结果,这其实是一种归一映射(常数函数)了,或者用魔术师的话说,就是force。这个我们下一篇再分析;

2. 无论哪两张牌,魔术师都是不知道其顺序的,仅仅知道其集合,或者在这个取子集的场景下,可以叫组合。因此,我们一定要同时说出两张牌,把它看成一个完整的效果而不要让观众有机会去联想到先后顺序的问题。所以,这里有两个观众每人两种牌就够了,完全没有必要变成4个观众,那时候你说不出每个人手里的牌是什么而只知道两个人的集合,就有点说不通和看起来奇怪了;

当然,只有一个观众的时候,那就像视频里这么做咯……

3. 还有一个点,因为魔术实现的方法用到了牌的位置和值这两方面的信息相互推算,因此很容易造成观众察觉其中的奥秘,哪怕不能够完全破解,也丧失了部分效果。如果这个魔术表演成先说出第一个观众的2张牌,再从牌叠中按照序数找另外2张,那就很明显第二个观众的牌是通过位置找的,而第一个观众的牌可能用了什么他们不知道的方法。虽然事实和这有出入,也推导不出来正确的结果,但是观众往这里想,你就输了。

因此,我们还需要用更强的引导去掩盖这个线索,比如这里的先找出后2张牌,说是用感应的,然后再说其实可以推导出第一个观众选的大的那张牌的点数,但是另一张就不知道了,也不知道他们的花色。这里就用到了一个完美的反跌,让观众放松并洋洋得意 ,这时候再猜出来,或者读心或者透视,就很厉害了。

魔术就这么矛盾,让观众看出来吧,高兴完了还要说你不行;看不出来吧,是神奇但是觉得被耍了。那行呗,要不然每个魔术都让你看出来那么一点点先?

在中间设置一些情节的跌宕起伏,不断设置这个效果不可能完成的矛盾冲突以及只能完成这一部分让观众恍然大悟觉得自己还比较聪明的放松和认同,这样的方法让这个魔术的呈现最终达到完美的效果。

对比原版,我的这个版本,对观众来说,魔术师是在完全不可能的情况下一共猜出了4张牌的花色点数,可以说厚度和内容都是很足的,不像简单的原版,仅有那么1个效果而已。而效果背后,直接就是秘密,虽然可能观众数学能力可能没有那么敏感能够精准察觉秘密在哪里,但是,在数学魔术表演阶段看到了数学的痕迹,其实和一般魔术漏门子已经没什么区别了,所以数学魔术的设计要求天然因为其秘密的特殊性就要高些。不仅原理难,不容易证明,更重要的是,连要证明什么,都没有人察觉才行。

而这里,增加的效果数量来稀释观众对单个效果的注意力,达到自然错误引导的作用,找不到真的重点,又有很多值得欣赏的效果,得以掩藏真正的秘密。这就是有一定信息量的魔术的好处,饱满起来更像一个完整的节目,而不是智力游戏。主要有以下几点,合并在一起,完成了这样的效果:

a. 增加了随机选择起点和张数来分成两叠的两个空间,并全程以此神秘概念串连;

b. 把数值的和变成扑克牌的张数,再用关键牌法确定这个张数,其实也是多了一层转化,魔术感又可以增强了;

c. 最后才是用到斐波那契数列项的和函数的可逆性判断数值,以及数值本身和对应扑克牌花色的满射,这个满射是一个早就setting好的固定结果;

这三点除了最后一点的原理和想法来自原作,前面两个都是我自己添加的。看完原作之后,就一直在想,怎么把这么好的数学性质用到魔术中。经过几个月的思考,雏形初现,还待日后在表演中不断改进提升。

好了,今天的数学和魔术就分享到这里。按理说,本系列仅写到第4篇,讲完数学,分享完一个魔术就结束了,在发表前硬生生又添加了5,6,7篇以及两个魔术作品来更全面地表达魔术的美感,数学的力量以及他们联合的魅力。另外,关于今天谈到的一一映射,还有个著名的Debruijin序列恰好就是用的这个,其在魔术,序列分析,机器人定位等各种领域都有应用,内容太多我以后专门写系列文章来讲。

 

在今天完成以后,突发灵感,又想到了一类特殊的函数——常函数,感觉又有了一些新的思路和曾经的作品进行一些碰撞和解读,决定在本系列再加一篇,大家看完视频继续期待吧!

 

视频2 Tiny Berglas Effect

我们是谁:MatheMagician,中文“数学魔术师”,原指用数学设计魔术的魔术师和数学家。既取其用数学来变魔术的本义,也取像魔术一样玩数学的意思。文章内容涵盖互联网,计算机,统计,算法,NLP等前沿的数学及应用领域;也包括魔术思想,流程鉴赏等魔术内容;以及结合二者的数学魔术分享,还有一些思辨性的谈天说地的随笔。希望你能和我一起,既能感性思考又保持理性思维,享受人生乐趣。欢迎扫码关注和在文末或公众号留言与我交流!
扫描二维码关注更多精彩
魔术里的集合、映射和关系(八)——硬核之作《双人扑克感应》中的数学
我和Double Lift的故事(五)——升华篇
闯红灯到底该不该罚款?——逻辑推理浅谈(二)循环、递归与魔术(五)——再谈递归的魔术逻辑与欣赏Roberto Giobbi的纸牌大学点击阅读原文,往期精彩不错过!

这篇关于魔术里的集合、映射和关系(九)——硬核之作《双人扑克感应》魔术赏析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/220962

相关文章

python安装whl包并解决依赖关系的实现

《python安装whl包并解决依赖关系的实现》本文主要介绍了python安装whl包并解决依赖关系的实现,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、什么是whl文件?二、我们为什么需要使用whl文件来安装python库?三、我们应该去哪儿下

Java集合中的List超详细讲解

《Java集合中的List超详细讲解》本文详细介绍了Java集合框架中的List接口,包括其在集合中的位置、继承体系、常用操作和代码示例,以及不同实现类(如ArrayList、LinkedList和V... 目录一,List的继承体系二,List的常用操作及代码示例1,创建List实例2,增加元素3,访问元

Java中基于注解的代码生成工具MapStruct映射使用详解

《Java中基于注解的代码生成工具MapStruct映射使用详解》MapStruct作为一个基于注解的代码生成工具,为我们提供了一种更加优雅、高效的解决方案,本文主要为大家介绍了它的具体使用,感兴趣... 目录介绍优缺点优点缺点核心注解及详细使用语法说明@Mapper@Mapping@Mappings@Co

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

MYSQL关联关系查询方式

《MYSQL关联关系查询方式》文章详细介绍了MySQL中如何使用内连接和左外连接进行表的关联查询,并展示了如何选择列和使用别名,文章还提供了一些关于查询优化的建议,并鼓励读者参考和支持脚本之家... 目录mysql关联关系查询关联关系查询这个查询做了以下几件事MySQL自关联查询总结MYSQL关联关系查询

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

基于Redis有序集合实现滑动窗口限流的步骤

《基于Redis有序集合实现滑动窗口限流的步骤》滑动窗口算法是一种基于时间窗口的限流算法,通过动态地滑动窗口,可以动态调整限流的速率,Redis有序集合可以用来实现滑动窗口限流,本文介绍基于Redis... 滑动窗口算法是一种基于时间窗口的限流算法,它将时间划分为若干个固定大小的窗口,每个窗口内记录了该时间

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

POJ1269 判断2条直线的位置关系

题目大意:给两个点能够确定一条直线,题目给出两条直线(由4个点确定),要求判断出这两条直线的关系:平行,同线,相交。如果相交还要求出交点坐标。 解题思路: 先判断两条直线p1p2, q1q2是否共线, 如果不是,再判断 直线 是否平行, 如果还不是, 则两直线相交。  判断共线:  p1p2q1 共线 且 p1p2q2 共线 ,共线用叉乘为 0  来判断,  判断 平行:  p1p

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip