测出你的姓氏--算命先生的“算法”分析

原创 2006年05月26日 07:49:00
         在农村或者小城镇生活的人可能都见过这样一种算命的,他首先会给你8张卡片,上面写满了姓氏,让你从里面找出有你自己姓氏的卡片,当你把所有自己姓氏的卡片给他的时候,他竟然会一口说出你的姓氏。然后你就会相信他后面所说的所有话,当然,拿钱也是毫不犹豫的事情了。 
     不过,只要是读过书的人都知道,这肯定是骗人的,都明白这个道理很简单,不就是在几张卡片中找出相同的姓氏,而且这些卡片中有且仅有一个姓氏是同时存在的。但是,大家有没有想过,一个卡片上有三四十个姓氏,你给他拿去的可能加起来就是100好几个姓氏,他是怎样一眼就看出来的呢?当然,这个也不是难题,不就是给每个卡片、每个姓氏加一个唯一的标示嘛,但仔细一样,要怎样加这个标示呢?又怎么样来快速的辨认这些标示呢?
    学过计算机的人可能一下子就明白了,“二进制”,或许能帮我们解决这个问题。大家都知道一个4位的二进制可以表示16以内任意一个十进制数,那么5位,6位...11111111这个8位的二进制数相当于10进制的255,也就是说一个8位的二进制数可以表示255以内的任意一个十进制数值。那么,我们就不难想到,取出他们的权值“1,2,4,8,16,32,64”,那么255以内的任意一个10进制数值都可以通过这8个数值中的任意个数想加得到。比如说:我们分别为8张卡片(假设为:A1,A2,A3,A4,A5,A6,A7,A8)分配上述8个数值。然后为所有姓氏分配一个唯一的大于0的数值。比如有:赵(1),钱(5),孙(14),李(43),王(90),卢(104)那么我们可以得到如下集合
A1=“赵,钱,李”;
A2=“孙,李,王”;
A3=“钱,孙”;
A4=“孙,李,王,卢”;
A5=“王”;
A6=“李,卢”;
A7=“王,卢”;
如果你是个要算命的,你给我拿来A1,A3卡片,我可以很快的算出:1+4=5,既“钱”;拿来A4,A6,A7,那就是“8+32+64=104” 既“卢”。异词类推,想必大家都已经豁然开朗。如果想通过计算机实现此功能也就相当简单了,只是对每个姓氏对应的数值转换成2进制,然后根据它的权值就可以确定这个字应该放在那些卡片里,然后把选出的卡片的值想加,再查询响应的姓氏就搞定了。
    由此我们可以清楚的认识到,不管是算命还是魔术或者其他,“骗人”只是众人的一种叫法,其实,它只是科学知识的另一种用途而已,所以,不管遇到什么让我们难以想象的事情,如果仔细想想,或许能通过自己所学来揭开它的迷团

汉字姓名生成unicode码的简单算法

public class UnicodeConverter { public static void main(String[] args) { String name="黄云增"; Str...
  • huangyunzeng2008
  • huangyunzeng2008
  • 2011年12月01日 17:02
  • 1147

基于IRT和CRT的试题难度计算控制算法

目前, CAT(Computer aided test, 计算机辅助测试系统) 试卷模式中试题难度分布设计的核心思想,主要根据难度分布应该是正态分布函数来进行假设的。而难度在教育心理学中的定义大致有两...
  • www_jun
  • www_jun
  • 2016年09月19日 10:40
  • 1042

我的中国心-百家姓头像

...
  • phphot
  • phphot
  • 2008年05月12日 12:12
  • 1607

准确测出你的年龄

请一面读一面做:   (1)首先,挑一个数字(0——7)表示每个星期想出去走走的次数;   (2)把这个...
  • zhbchn
  • zhbchn
  • 2006年09月12日 20:34
  • 682

日本常用姓氏表

日本常用姓氏表 Table of Common Japanese Surnames    A B C D E F G H I J K-1 (Ka~Ki) K-2...
  • GarfieldEr007
  • GarfieldEr007
  • 2016年06月08日 14:27
  • 820

【科普】通过西方人的姓名判断血统国籍

http://zhan.renren.com/makehistorylove?gid=3602888498034637157&from=post&checked=true 1、英格兰人和...
  • qwertyuj
  • qwertyuj
  • 2013年10月26日 22:15
  • 1391

MySQL查询按姓氏拼音排序

order by CONVERT(b.name USING gbk)
  • sam_jet
  • sam_jet
  • 2014年07月07日 15:31
  • 1876

项目---考评系统排课算法分析

第一次参加项目,跟着师姐做考评系统需求分析,将考评分为:教务、后台、教师、学生四个角色,我们做教务,做需求和做开发的区别在于,搞开发敲代码会越来越上瘾,做需求就是一直在给大脑做思维体操,经常要推翻自己...
  • u013047584
  • u013047584
  • 2015年08月20日 16:56
  • 1434

告诉你外语学习的真实方法及误区分析(精编版)

前 言   著名语言学家Greg Thomson说的:“外语学习的原理是如此之复杂,以至于没有人能说清楚;但掌握语言的过程又是如此之简单,以至于不需要说清楚。”讨论语言学习的原理,是件非常复杂的...
  • chengkaizone
  • chengkaizone
  • 2015年11月09日 20:22
  • 3741

使用JDK生成证书

1、在命令行中进入%JAVA_HOME%/bin目录下执行以下命令: keytool -genkey -alias tomcat -keyalg RSA -keypass c...
  • scmrpu
  • scmrpu
  • 2015年12月30日 08:43
  • 402
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:测出你的姓氏--算命先生的“算法”分析
举报原因:
原因补充:

(最多只允许输入30个字)