首页 >> 数学 >> 计算机科学 >> 文章

世界上有10种人,1种是懂二进制的,1种是不懂二进制的。

今天,让大家来看一看科学青年怎么用二进制来完成追女的任务,下面是两个可以用来勾引mm的数学魔术。

1、初级版:四张卡片猜出你的星座

泡 MM 时怎样问出对方的生日?先问她的星座吗?现在已经不流行了。这里给你支招:借助一些数学知识,你就能用 Geek 特有的方式问出她的星座。

你对星座有兴趣吗?传说星座与人的性格、命运、爱情、事业、友情、家庭都有紧密联系,不过魔术师说,那些都是浮云。“我今天为你表演一个靠谱的,我要用心灵来感知你的星座。如果你对星座一无所知,就先看一下下面这张表吧,一年一共有十二个星座,你属于哪一个星座取决于你的出生日期。”
http://www.guokr.com/gkimage/qf/2i/6g/qf2i6g.png
这个魔术其实很简单,魔术师会先后展示给观众 A、B、C、D 四张图片,每一次观众只需要仔细看一看,自己的星座有没有位列其中。

http://www.guokr.com/gkimage/yl/f8/h8/ylf8h8.png

举个例子,如果你是史上最不幸的、每四年才可以过一次生日的那个人,出生日期是 2 月 29 日,那你的星座一定是双鱼座。这样,你的星座只有在图片 C 和 D 中才可以看到,在图片 A、B 中都看不到。把这个结果告诉魔术师,魔术师经过一番心灵感应后,就可以确定你是双鱼座。

魔术揭秘

对于不明真相的围观者来说,这个魔术会显得很神奇。不过,一部分理工男却能一眼看穿魔术的蹊跷之处。魔术师具体的做法是,首先在心里安装一个“计数器”,一开始数字为 0。如果你的星座出现在了卡片 A 中,魔术师就会在计数器上加 1,否则计数器数字不变;如果图片 B 中有你的星座,他就会再加上 2 ;图片 C 中有你的星座,计数器就加上 4;图片 D 中有你的星座,计数器就会加 8。计数器最后得到的数字就是答案了。比如按照刚刚那位“生日帝”告诉魔术师的结果,计数器的数字就是 4 + 8 = 12。然后,让文章开头那张图中隐藏的数字显示出来:

http://www.guokr.com/gkimage/3a/iy/kp/3aiykp.png

数字对应的结果就是心灵感应到的星座了。

二进制计数法

正常情况下,数字 12 可以写成 1×10 + 2×1,其中 1 是十位数字,2 是个位数字。如果这个数字更大,还会有百位、千位等等。这些数位的单位从小到大分别是 1、10、100、1000⋯⋯

可是我们还可以用另一种方式来表示一个数,就是魔术师所用的方式——二进制。在二进制中,12 = 1×8 + 1×4 + 0×2 + 0×1,在这里,数位的单位由 1、10、100、1000 变成了 1、2、4、8,同时每个数位上的数字也由 0 到 9 十种变为了 0 和 1 两种,12 也就可以用 1100 来表示了。卡片 A、B、C、D 分别是从小到大的 4 个数位,由于 12 号星座——双鱼座——的二进制表达是 1100,因此双鱼座就只在卡片 C 和 D 上出现。在四张卡片上指认星座的时候,你也就把星座对应的数字的二进制表达偷偷泄露给了魔术师,如果你告诉魔术师有,就相当于告诉他了那一位数字是 1,反之,那一位数字就是 0。

二进制的用途非常广泛。计算机正是像这位魔术师一样,用二进制来表示各种数字。

2、进阶版:泡MM,没有缘分也要制造缘分

在泡 MM 的时候,只问出她的星座是远远不够的,最关键的是要让 MM 知道你们俩心有灵犀,这样才能真正赢得她的芳心。这一次,我们再来一个进阶版的魔术。

首先,把一副扑克牌中的大小王和四个 K 去掉,这样 54 张牌就只剩下 48 张了。

/gkimage/yh/m3/n7/yhm3n7.png

把这 48 张牌交给MM,让她洗一洗牌。然后,把洗过的牌在桌子上正面朝上一字摊开。

/gkimage/8d/zf/y5/8dzfy5.png

“现在,我要用我的心去选一张我最喜欢的牌”,你可以说,“就这一张了,黑桃 5。” 然后把这一张牌抽出,背面朝上放到一边。

/gkimage/a0/9i/es/a09ies.png

把剩下的牌重新收起来,对 MM 说:“你用你的心来感知这一叠牌的一半数量,把它们拿起来放到你手里吧。”等 MM 拿好牌后,你说:“你准确地知道手里有多少张牌吗?”MM 没有数过,自然不会知道。“我也不知道。整副牌现在有 47 张,你手里可能有 22 张、23 张或者更少;如果你刚才手狠了一点,手里可能会有 24 张、25 张或者更多。不过无论如何,如果这副牌象征着你和我的爱情,那么你拿走的一半就象征着你的心,这一切都是上帝的安排。”

下一步,要求 MM 把这叠牌背面朝上握在手里,从第一张牌开始,交替地把手里的牌分成左右两堆:第一张牌背面朝上放到左边,第二张牌正面朝上放到右边,第三张背面朝上放在第一张牌上,第四张牌正面朝上放到第二张牌上……等到手里的牌全部分完后,拾起那叠正面朝上的牌,翻过来,再像刚才那样,分成背面朝上和正面朝上的两叠。然后再拿起正面朝上的那一叠,不断继续下去。到最后,MM 手里就只剩下一张牌了。

/gkimage/od/pi/k3/odpik3.png

此时你把魔术最开始的时候抽出的那张牌拿出来:“我用我的心做出的选择和你用你的心做出的选择是一模一样的。”

/gkimage/1y/5j/ln/1y5jln.png

魔术揭秘

这个魔术的关键在于,开始的时候,“我要用我的心去选一张我最喜欢的牌”,的确要“用心选择”——要“别有用心”地选择。首先,看清楚从左到右数第 16 张牌是什么牌,然后在 16 张之后的牌中选择一个和那张牌数字相同的(其他的三个 5 全部集中在前 15 张的可能性不大,如果出现了,就再洗一次牌吧)。

/gkimage/4f/j3/8o/4fj38o.png只要 MM 拿起的牌是在 16 张到 31 张之间(不必正好一半),魔术就会成功。把这半副牌左一张右一张分成两部分的过程可以这样来理解:将整副牌自上而下编号(牌是背面朝上的),所有编号为偶数的牌会被分到右边那一堆。也就是说,牌的编号被 2 除时,余数是 0 的牌就会被归到右边。进行第二轮分牌的时候,所有第偶数张牌会被归到右边,这些牌就是初始序号连续除以两次 2 都余 0 的牌。分了四次以后,在小于等于 31 的数字里,连续除以四次 2 余数都为 0 的只有 16。也就是说,不管 MM 拿了多少张牌,只要牌数在 16 到 31 的范围内,最后她手里剩下的那张牌一定是整副牌里的第 16 张。下面这张表格以 MM 手中有 24 张牌为例,详细说明了四次分牌的过程:

/gkimage/ne/na/ia/nenaia.png

和猜星座的魔术一样,这个魔术与二进制也有关系。16 用二进制表示是 1000,后面三位都是 0;在 1 到 31 的数字里,这是独一无二的。看来,二进制不仅是计算机程序猿们必须要知道的知识,在勾引 MM 领域也是大有用途的。

本文已发表于果壳网

数学魔术:四张卡片猜出你的星座

数学魔术:泡MM,没有缘分也要制造缘分

0
为您推荐

28 Responses to “[数学魔术]之程序猿勾引mm的两招”

  1. wty6891说道:

    这个骗局也太老了 不敢保证MM以前没被耍过 有新鲜点的魔术吗?

  2. Yin说道:

    大爱,我最近在学魔术,听明白之后其实就是那个道理,哈哈哈。一点就通的飘过。

  3. 喜羊羊和一休哥说道:

    我也会骗小女孩了~~

  4. 浮云哥说道:

    第一个猜星座bug也太大了。正好是1,2,4,8的星座只能在一张卡片上出现。那你当人家这四个星座的人白痴么。。。

    • wadefelix说道:

      4位二进制数可以表示 15个数(无0),你可以把1248去掉 用13 14 15表示啊,还剩下一个,没有办法。
      不过你可以在更宽广的5位二进制数表示,从31个数中挑12个来表示这12个星座

  5. 阿诺说道:

    本文歧视理工女

  6. 冰芒说道:

    现在的mm没那么笨吧…

  7. Evens说道:

    呵呵!

  8. Ben说道:

    以前不是“猜”生肖么,还有路边那些“猜”姓氏的

  9. Benka说道:

    怪不得程序员追不到女生

  10. Evelyn说道:

    魔术什么的最讨厌了……

  11. nanerhebu说道:

    扑克那个魔术操作过于复杂,难以保持持续的热情

  12. About丶Blank说道:

    懒得学,追美眉 胆大心细厚脸皮 哈哈

  13. Sunner说道:

    说得好复杂哦。
    “每一次观众只需要仔细看一看,自己的星座有没有位列其中。”道理其实就是,对于不同的星座,观众的回答一定是不一样的。

  14. xym_g说道:

    8421编码 我说这么熟悉

  15. clelar说道:

    第一个命题解释的不太完整吧,没有说明4张卡片上所选的星座(代表数字)也是有讲究的

  16. 王强说道:

    对于第一个算星座的方法我算是能照猫画虎了,但是我是我更感兴趣它的内因,比方说A,B,C,D对应的星座,还有星座为什么要那样编号,望解答

    • hamming说道:

      这是海明码(hamming code)的一种聪明的变化,这种利用韦恩图设计的编码方式本来用于单比特纠错,但这种应用也挺有新意的。

      • big_z说道:

        给星座编号可以随便的,只要在制作abcd四张卡片的时候找准对应关系就好,比如你第五个是摩羯座, 那摩羯座(0101)就应该出现在b和d的卡片上。哈,我就是摩羯座, 飘过~

  17. 杨朋说道:

    6毛加6毛等于,一块2.

  18. 王小锐说道:

    BUG?

  19. NCC-1701-X说道:

    第一个有点类似位运算。。。

Leave a Reply