少年时有好友向我展示了一个扑克牌魔术:他拿出一副牌的A~10的所有牌共40张,洗乱,让我背着他拿走一张牌,接着他迅速地一张张浏览剩下的39张牌,浏览两遍之后,他准确地说出了拿走牌的点数和花色。这是一个不怎么优雅的扑克牌魔术,却是一个硬碰硬绝对没作弊的魔术。
如果你的计算力足够厉害,比如说你像Von Neuman,或者干脆你的脑袋就是电脑,那你可以给每张牌赋一个不同的值,先算出总数,等我拿走一张牌之后,你一遍算出剩下牌的值总数,就可以知道哪张牌是我被拿走的。
大部分人心算两位数的加减其实都已经很吃力了。好友的算法是,只加尾数。第一遍根据点数算出所有牌的个位数和,被10一减就可确定点数;第二遍根据点数确定花色。算时只做个位数加法,心算好的人可以把牌翻得浪快。当时我为了在心仪的mm面前好好表现一下该魔术,刻苦地训练了一番。但无奈自己的心算实在不佳,要么算到一半卡住,翻牌不连贯;要么在第二遍找花色时发现四张牌都在。失误率太高了,拿出手必定是偷鸡不成蚀把米,在美女面前丢脸下不了台。
人脑计算一位数的和比计算二位数快,而加数是1、2的时候更快。根据该原理我想到了一个好法子,可以大大减少人脑的计算难度,而且可以扩张到整幅牌。第一遍,确定花色。方法是给每种花色赋值,方块1,红桃2,草花3,黑桃0,做模4加法,即和超过4则减4(可用口诀来助记:332 代表3+3-4 = 2,  321,310,220,...),最终算出的和数,跟花色的对应关系是:1——方块,3——草花,0——红桃,2——黑桃。第一遍还得对大小王做特殊处理,记忆好的人直接留意一下即可;我的记忆力不好,是用脚趾来助记的,遇到大王左脚趾抓地,小王则是右脚趾。第二遍,根据所缺花色,确定点数。令J=-1,Q=-2,K=0,做模13求和,可确定所缺点数。
我改进的算法,在第一遍做的加法不超过3+3的难度(我还试过给草花赋值-1),第二遍只需算10次加法(加0不计),因为算的难度总体降低了,可较大提高准确率和速度。像我心算如此不佳的人,当时稍微训练了一下,在美女面前,都可以把牌翻得飞快,让美眉目不暇接、好奇心大起,从而跟美女多说了好多话。(原谅我,标题上说可用来骗美女,其实是实打实的在美女面前做苦算,诚心诚意博佳人一笑而已。)

最近想到了一个新问题:如果mm拿走的是两张牌,你能设计一个快速的翻牌方法来确定mm拿走的牌吗? 规定翻牌的方式翻一次只能看一张牌。
感觉这个问题很有挑战性,但也十分有趣,大家一起来献策献力吧^_^

转载于:https://www.cnblogs.com/cys12345/archive/2009/04/08/1431833.html

扑克牌魔术的暴力算法——可用来骗美女哦相关推荐

  1. 扑克牌魔术里面的算法

    前言 今天在 B 站上看了一个和扑克牌.算法.数学有关的心灵感应魔术,适合撩妹子. https://b23.tv/uXIQeL 看完之后,想写一篇和扑克牌有关的算法文章. 正文 题目描述 从扑克牌中随 ...

  2. 随便选一张扑克牌_扑克牌魔术手法教学,简单易学的纸牌魔术,三分钟让你成为大师...

    标签: 魔术手法 扑克牌魔术 魔术技巧教学 纸牌魔术揭秘 所有的纸牌魔术家都知道怎样假装把一张牌塞进牌堆,然后从顶部翻出来来让观众吃惊.这个技巧用来练习手速.手指灵敏度.适时分散观众注意力和表演艺术绝 ...

  3. Java基础练习——读心术(扑克牌魔术——21张扑克牌)

    Java基础练习--读心术(扑克牌魔术--21张扑克牌) 用到了Scanner,for循环,if-else语句,集合,线程的Thread.sleep()方法 话不多说,直接上代码!

  4. 字符串匹配算法——暴力算法

    字符串匹配算法--暴力算法,简称BF(BruteForce)BF(Brute\:Force)BF(BruteForce)算法. 基本思想:从主串(str)(str)(str)的第一个字符开始和子串(p ...

  5. Java基础练习——读心术(扑克牌魔术——21张扑克牌)–代码简化版

    Java基础练习--读心术(扑克牌魔术--21张扑克牌)–代码简化版 代码 import java.util.ArrayList; import java.util.Collections; impo ...

  6. C语言||暴力算法解数独

    前言 前几天在玩解数独游戏时,发现有点费时间.心血来潮想实现一个解数独的c语言程序,根据我在晚解数独游戏的思路,采用了暴力算法求解.在数组维数的选择上,我选择了用一维数组实现. 分析 其实暴力算法求解 ...

  7. C语言魔术阵,C语言编程:扑克牌魔术

    看到一个扑克牌魔术的题目,觉得挺有意思. 题目网址:http://zhidao.baidu.com/question/407505626.html 这个题目已经有了答案. 但是答案的程序,看起来有些费 ...

  8. 用Java写的一个简单的扑克牌魔术

    一个用Java写了的简单的扑克牌魔术 一个用Java代码写的简单的扑克牌魔术,就是常见的在心里记一张牌,然后问你两次范围就知道答案,好像原理有点像二进制,小时候大人用这个魔术逗小孩开心,10几年了,原 ...

  9. 用SQL解析神奇的扑克牌魔术

    日前据媒体爆料,已上过多届春晚的魔术师刘谦因档期等原因婉拒了央视春晚的邀请,而马年春晚的魔术师YIF今年也没有上春晚的行程.但是可以确定的是,今年我们又会在春晚上看到魔术表演这一环节. 在前几年,刘谦 ...

最新文章

  1. leetcode算法题--最大的以 1 为边界的正方形★
  2. bzoj 5090 组题
  3. Luogu P4709 信息传递 (群论、生成函数、多项式指数函数)
  4. 使用阿里云火车票查询接口案例——CSDN博客
  5. 200 switching to ascii mode_【图片】15005377957 三轮车载式液压打井机XYC-200A 型深水井钻机游走乡【地勘吧】...
  6. JavaScript 演练(4). 回调函数
  7. php和ajax实现聊天功能,怎么在PHP项目中使用jquery与ajax实现一个即时聊天功能
  8. C实现的UDP压力测试工具
  9. java单点登录SSO教程(含源码和视频教程)
  10. 通过app NA渲染后的app source 抓包
  11. Vue 记录一次安装插件引起的项目崩溃(This is probably not a problem with npm,there is likely additional logging outp)
  12. 新浪微博批量取消关注
  13. 不用编程 实现西门子PLC和罗克韦尔AB PLC的通讯和协议转换
  14. gym103627L XXII Open Cup, GP of Daejeon Curly Racetrack 题解
  15. Unity3d之表情动画--眨眼
  16. 开源手游暗黑世界客户端部分代码注解续
  17. 计算机财务管理系统的建立,第13章 计算机财务管理系统的建立.ppt
  18. 1.oracle RAC11G 对单机ADG搭建详细文档
  19. 洛谷 P1710 地铁涨价 (dfs+bfs)
  20. layui数据表格分页无法正常显示

热门文章

  1. 通过Ajax获取数据并显示在表格中(原生Ajax,JQuery,Bootstrap,模板引擎)
  2. windows平台下的mysql启动等基本操作
  3. 移动IPv6光猫各个lan口的作用,移动光猫lan3口可以设置上网吗?
  4. 高中女生军训期跳楼自杀 青春期心理教育问题引人深思
  5. Pwnable之[Toddler's Bottle](三)--unlink
  6. HCIP---VLAN实验
  7. Spark取TopN问题
  8. linux php oracle扩展_linux系统下php oracle扩展OCI8的安装与配置
  9. 紧固连接的螺栓松动的原因?——SunTorque智能扭矩系统
  10. 微服务实战之春云与刀客(五)—— spring cloud与docker swarm集群