今天刷知乎看到的,记录一下思路。
这个魔术的总体思路是,让一个观众任意抽取一套扑克牌(去掉大小王之后)中的五张,经过助理的一些操作,将其中一张牌给观众,另外四张牌给魔术师, 让魔术师能够根据这四张牌的内容推理出观众手里的那张牌。
这个魔术里面,助理实际上需要的操作复杂的多,这个意义上,助理更像是魔术师。(助理编码->魔术师解码)
操作:
观众任意选取五张牌,并交给助理。注意因为是在一套扑克牌内,所以:
(1)不可能抽到两张完全一样的牌。
(2)由于抽屉原理,五张中一定存在两张的花色是一样的。
助理找到两张花色一样的牌,如果他们的数字之间的差<7,则将较大的一张给观众,否则,将较小的一张给观众。
助理对剩下四张牌进行排序,并将四张牌交给魔术师。要求为:
(1)最上面一张是那张花色与观众手中的牌花色一样的牌。
(2)如果两张牌数字之差\(d<7\),则记\(r=d\),否则记\(r=13-d\),此时\(r\)只有六种取值:\(1-6\)。
(3)根据\(r\)的值排列下面三张牌的顺序:约定当数字大小相同时,梅花<黑桃<方块<红桃,则顺序对应如下表所示:
\(r\) 顺序 1 小中大 2 小大中 3 中小大 4 中大小 5 大小中 6 大中小 魔术师根据助理给过来的牌的顺序,推断观众手中的一张牌。
(1)将扑克牌从左到右展开,先看最右边一张牌的花色,即可确定观众手中牌的颜色。
(2)根据左边三张牌的顺序确定一个\(1-6\)之间的数\(r\),再读出最右边一张牌的数字\(a\),那么观众手中的那张牌的数字为\(x = a+r(mod\ 13)\)。
原理:
确定花色的原理就是抽屉原理,这个不用说了。
确定数字的原理是通过三张牌的顺序对应一个\(1-6\)之间的数\(r\),但只知道花色的情况下,数字大小有\(12\)种可能(除了魔术师手上那张牌的数字),所以通过交换大小数字的方式来用超过13的部分模13的余数,让可编码范围拓宽至所有可能的\(12\)种数字。