2024春晚 刘谦互动魔术解析[非严谨数学证明]

抽象题干

  • 我们先把具象的魔术流程抽象化
首先,牌堆定义为一个数组a。



撕牌:数组扩容,a[4]变a[8]

按名字把牌放到牌尾:将数组前random(1,2,3,4)[看起来是1-8的随机数,但实际上是1-4,这个比较简单,笔者不做解释,大家自己拿纸推导一下即可]元素构成的子数组添加到数组尾,构成新的数组

将前三张牌插入任意位置:将数组前3元素构成的子数组插入后5元素构成的子数组的任意位置

取出第一张牌:取出数组头

按照南北方将牌插入:将数组前random(1,2,3)元素构成的子数组插入剩余元素构成子数组的任意位置

按照性别丢牌:将数组前random(1,2)的元素删除

七轮洗牌:进行七轮头尾插入操作

好运来,霉运走:头尾插入;删除头操作循环直到数组仅剩一元素



结论:该元素和取出的元素数值一致

带着例子解析:

  • 先说结论:从最后的好运来霉运走才算是真正意义上的数论操作,前部操作障眼法偏多(要不怎么说是魔术呢!)
我采用元素不变,变序号的方法进行讲解。


初始状态:
元素:1 2 3 4 1 2 3 4
位序:1 2 3 4 5 6 7 8
数组状态:1 2 3 4 1 2 3 4

按名字排序:(我就以我自己的名字为例了(random = 2),其实这里到底是几个名字根本不重要,因为此时我们的target(后面取出的那一张)还不确定。如果还无法理解,请耐心继续往下看)
元素:1 2 3 4 1 2 3 4
位序:7 8 1 2 3 4 5 6
数组状态:3 4 1 2 3 4 1 2

取三张插入:
这里我们认定插入的位序在插入后数组的第x个位置[x = 2 or 3 or 4 这里忽略直接插头插尾]
(这里我以x = 4来讲)
元素:1     2 3 4     1     2 3 4
位序:(x+3) 8 x (x+1) (x+2) 1 2 3
数组状态:2 3 4 3 4 1 1 2


取出第一张:
!!!关键的来了啊
观察一下上面的数组,你发现了没?我们的第一张,和我们剩余牌堆中一模一样的那张(后文中命名这张牌为target)正好位于首位和末尾!

南北方插入牌:
random(1,2,3)且插入位置不会在最后一张之后,所以完全不影响我们剩余的牌序
数组状态:? ? ? ? ? ? 2(target)

按性别丢牌:
评价是:依然不影响target位置
数组状态:? ? ? ? ? 2(target)
     or  ? ? ? ? 2(target)

七轮交换:
数组状态:? ? ? ? 2(target) ?
     or  ? ? 2(target) ? ?

换牌弃牌循环:
手动推导一下就知道,剩下的肯定是我们的target
  • 数论证明部分留给大佬,蒟蒻就不说话了。

如果您觉得有意思,可否点赞收藏关注一下本蒟蒻!谢谢!

你可能感兴趣的:(娱乐,算法)