助手给观众一幅扑克,52张的,没有鬼,让观众任取5张
助手把5张牌排序一下(这是关键),然后把第一张给回观众,剩下4张交给
魔术师,魔术师说出第一张牌是什么
原理是这样的
5张牌中必有两张是同样花色的
助手找出两张同样花色的牌,看点数,例如是2和7,由于7-2=5<=6,让7放前面。
如果是2和9,9-2=7>6,那么让2放前面。使得前面的牌的点数a和后面的牌的点数b
满足(a-b+13)%13<=6,其中%是取余数的意思,例如15%13=2
剩下的三张牌中,找出最小的那张,方块A最小,黑桃K最大
假设之前的(a-b+13)%13=c(0<c<=6)
在剩下的三张牌中,如果 c<4,让最小的牌放在第 c 个位置,否则放在第 c - 3 个位置
剩下的两张牌,如果 c > 3, 那么使前面那张牌比后面大,否则使前面那张牌比后面小。
这样5张牌的顺序就排好了,把第一张给回观众,剩下四张给魔术师
然后魔术师拿着4张牌,除去开头那张牌,找出最小那张牌的位置p(p = 1或2或3),
然后除去这张牌,剩下的两张牌如果前面的比后面的大,则 p 加上 3,这是 p 就可能为 1 ~ 6。
再看开头的那张牌的点数 b, 则观众那张牌的点数 a = (b + p) % 13,花色一样。
就这样,是今天在 Sicily 做的题1018.A Card Trick。题中描述了解密的过程,然后自己想怎样加密
并编程实现。
例如观众抽到 方块4 红心5 梅花10 方块10 红心Q,
那么排序为 红心5 红心Q 方块10 梅花10 方块4
在最后三张牌中,最小的方块4排第3,另外两张牌方块10和梅花10顺序反了,所以得到
p = 3 + 3 = 6。那么第一张牌为 (12 + 6) % 13 = 5,注意Q是12.
当然排序结果不一定是唯一的。
哈哈,现在可以去唬人鸟~~~
PS:这是我在sicily做的第 150 题,升级成 Class 5 - Beetle 了,呵呵。。赶在回家之前。。
助手把5张牌排序一下(这是关键),然后把第一张给回观众,剩下4张交给
魔术师,魔术师说出第一张牌是什么
原理是这样的
5张牌中必有两张是同样花色的
助手找出两张同样花色的牌,看点数,例如是2和7,由于7-2=5<=6,让7放前面。
如果是2和9,9-2=7>6,那么让2放前面。使得前面的牌的点数a和后面的牌的点数b
满足(a-b+13)%13<=6,其中%是取余数的意思,例如15%13=2
剩下的三张牌中,找出最小的那张,方块A最小,黑桃K最大
假设之前的(a-b+13)%13=c(0<c<=6)
在剩下的三张牌中,如果 c<4,让最小的牌放在第 c 个位置,否则放在第 c - 3 个位置
剩下的两张牌,如果 c > 3, 那么使前面那张牌比后面大,否则使前面那张牌比后面小。
这样5张牌的顺序就排好了,把第一张给回观众,剩下四张给魔术师
然后魔术师拿着4张牌,除去开头那张牌,找出最小那张牌的位置p(p = 1或2或3),
然后除去这张牌,剩下的两张牌如果前面的比后面的大,则 p 加上 3,这是 p 就可能为 1 ~ 6。
再看开头的那张牌的点数 b, 则观众那张牌的点数 a = (b + p) % 13,花色一样。
就这样,是今天在 Sicily 做的题1018.A Card Trick。题中描述了解密的过程,然后自己想怎样加密
并编程实现。
例如观众抽到 方块4 红心5 梅花10 方块10 红心Q,
那么排序为 红心5 红心Q 方块10 梅花10 方块4
在最后三张牌中,最小的方块4排第3,另外两张牌方块10和梅花10顺序反了,所以得到
p = 3 + 3 = 6。那么第一张牌为 (12 + 6) % 13 = 5,注意Q是12.
当然排序结果不一定是唯一的。
哈哈,现在可以去唬人鸟~~~
PS:这是我在sicily做的第 150 题,升级成 Class 5 - Beetle 了,呵呵。。赶在回家之前。。