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

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

相关文章

C++中unordered_set哈希集合的实现

《C++中unordered_set哈希集合的实现》std::unordered_set是C++标准库中的无序关联容器,基于哈希表实现,具有元素唯一性和无序性特点,本文就来详细的介绍一下unorder... 目录一、概述二、头文件与命名空间三、常用方法与示例1. 构造与析构2. 迭代器与遍历3. 容量相关4

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

使用MapStruct实现Java对象映射的示例代码

《使用MapStruct实现Java对象映射的示例代码》本文主要介绍了使用MapStruct实现Java对象映射的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、什么是 MapStruct?二、实战演练:三步集成 MapStruct第一步:添加 Mave

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

SpringBoot路径映射配置的实现步骤

《SpringBoot路径映射配置的实现步骤》本文介绍了如何在SpringBoot项目中配置路径映射,使得除static目录外的资源可被访问,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一... 目录SpringBoot路径映射补:springboot 配置虚拟路径映射 @RequestMapp

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.