2024年1月8日发(作者:上海通用汽车有限公司官网)

揭开《猜姓》游戏的奥秘

曾见街头有人摆摊猜姓。摊主面前摆着七八张写 着姓氏的纸片,只要有人说出那几张纸片上有他的姓 氏,那几张纸片上没有,摊主立马就能准确说出他的 姓氏来。

《猜姓》游戏与《猜年龄》游戏一样,运用的是 二进制数与十进制数的换算知识。这两种游戏又都是 最低级的密码游戏。

大家对电视剧中的发报场面很熟悉,这边一个发 报员,那边一个收报员。发报员把要传送的信息编成 密码(密文)发送出去,收报员收到电报密码(密文) 后,对照密码本把密文翻译成明文就知道了发报员发 送的信息。

《猜姓》游戏就是这样。摊主相当于收报员(处 主动地位),他面前摆着的几张纸片就是密码本,其 他参与者是发报员(处被动地位)。密码本是摊主编 辑的,其他参与者对此毫不知情。

密码、密码本是这样生成的:

以6张写着姓氏的纸片外加一张姓氏对照表为 例。

6张纸片就是要用6位二进制数作为系列密码。 每张纸片表示一个二进制数数位。

因为最大的6位二进制数[111111]

2=63,所以, 能猜63个姓氏。如果是7张纸片,就是用7位二进 制数为系列

密码,能猜出[1111111]

2=127个姓氏来。 余类推。

先按顺序(也可打乱顺序)取《百家姓》中前(也 可根据各地姓氏特点挑选)63个姓氏,顺次用十进制 数编好序号(未加密的密码),就得出了姓氏对照表。 如下:

姓氏对照表

1赵

2钱

3孙

4李

9冯

5周

10陈

11褚

6吴

12

7

8王

13蒋

14沈

17朱

22吕

15韩16杨

18秦

23施

19尤

24张

20

25

21何

26曹

27严

30魏

35邹

28华

29金

31陶

36喻

32姜

37柏

33

38

46

51

34谢

39窦

40章

41云

42苏

43潘

44葛

49鲁

45奚

50韦

47彭

52马

55花

60柳

48郎

53苗

56方

61酆

54凤

57俞

62鲍

58任

59

6位数

63史

再把姓氏前的序号(密码)换算成二进制

(加密一一为了使他人更难弄懂)

赵 仁[000001]

2

2=[000010]

2

3=[000011]

2

62=[111110]

2

63=[111111]

2

这些二进制6位数就是其对应的姓氏经过加密后 的密码。(为什么要用二进制数作为系列密码?因为 二进制数每个数位上的数字只有

0或1两种选择,这 样处理起来方便。)

然后,按数位顺序([C5QQQGC0])把0位是1

的姓氏写在表一里,1位是1的姓氏写在表二里,2

位是1的姓氏写在表二里,余类推。得出

6张写着姓 氏的纸片。每张纸是一个表。每个表中都有

2 X 2X2 X 2X 2=32个姓氏。如下:

表一(

0位是1

的姓氏)

^严

奚鲁

酆表二(钱

沈秦

魏谢

范韦

鲍表三(李

沈邹

1位是1

2位是1

------ A.

^严

的姓氏)

的姓氏)

表四

表五(杨

苗 凤

(3位是1的姓氏)

冯 陈

孔 曾

------ A.

俞 任

4位是1的姓氏)

朱 秦

孔 曾

鲁 韦

/严

/严

任 袁

表六

(5位是1

的姓氏)

------ A.

谢 刍E

苏 潘

韦 昌

任 袁

鲍 史

每张表中姓氏的顺丿予可打乱,那样更能迷惑人。

到此,密码、密码本就编好了。

游戏过程就是一个“发报 ----- 收报 --- 密文 ----

明文”的过程。

发报一一收报:摊主在编辑密码前就已经定义了

1和0的意义,1表示有,0表示无。当其他参与者回 答摊主那几张纸(表)上有他的姓氏,那几张没有时, 就充当了一个被动的发报员,把自己姓氏的密码在不 知情的情况下发送给了摊主。那几张纸上有,这张纸 所代表的数位上的数字就是1,没有就是0。摊主收 到了这些信息,就得出了对方姓氏对应的密码一一一 个二进制6位数(密文)。以

下就是把(密文)翻译 成明文了。

密文——明文:摊主收到的原始密码(一个二进 制6位数)是一个经过了加密的密文,把这个二进制

6位数换算成十进制数就得到了解密的密文,再把这 个十进制数作为序号对照姓氏对照表(密码本),找 出所对应的姓氏,就把密文翻译成了明文。对方姓氏 是啥就明白了。

例如:有人说表三、表五中有他的姓氏,余没有。

就是说他的姓氏密码2位、4位上是1,其它数 位上是0,这个数是[010100]

2,换算成十进制数是

[010100]

2=20,查姓氏对照表,20对应的姓氏是

许。所以,这人姓许。

当然,实际操作起来没这么复杂。根据

[C5C4C3C2C1OD]

2

=C5X 32+C4X 16+C3X 8+C2X 4+C1X 2+C0X 1

知二进制数0位、1位、2位、3位、4位、5位 上的1所代表的十进制数分别是1、2、4、8、16、

32。所以,只要记住表一、表二、表三、表四、表五、 表六所对应的数分别是1、2、4、8、16、32就行。 这样,只要有人说出那几张纸上有他的姓氏,只需把

这几张纸对应的数加起来,所得和就是他的姓氏在姓 氏对照表中的序号。对号入座就知道他姓什么了。

还以许为例,表三、表五中有,余没有。表三、 表五

分别对应4、16。4+16=20。查姓氏对照表,20

对应许,所以他姓许。

实际玩这游戏时,每张纸片上不需标出表一、表 二的字样,只要标上一个自己明白的记号就行。姓氏 对照表也不需出示于人,可熟记于心,这样让人觉得 更玄。

破解《 猜年龄》游戏之迷

一天,几个学生问我:“老师,昨天我 们去逛集,看到一老人在摆地摊猜年龄,我 们几个都输了钱。你能帮我们解开其中之迷 吗? ”原来,那老人面前的地摊上摆着

6张

纸,每张纸上都写着

32个数字,只要你说 出那几张纸上有你的年龄数, 他就能一口说 出你的年龄来。他若说对了,你给他1块钱; 若是说错了,他就赔你10块钱。

其实,这就是个二进制游戏,耍的是十 进制数与二进制数换算的花枪。6张写着数 字的纸就是特制的6张表,这6张特制的表 能表示出任意一个二进制

6位数。最大的二 进制6位数

是[111111]2=63,所以这6张纸 上按规律列着1?63这63个数字,能猜出 不大于63岁的任何一个人的年龄。

设二进制6位数的一般形式为

[C5C4C3C2C1C0]

2,Co、Cl、C2、Q、C4、C5分别表

示二进制数0位、1位、2位、3位、4位、

5位上的数字。先把1?63这63个十进制数 通过换算表示成二进制

6位数:

仁[000001]

2

2=[000010]

2

3=[000011]

2

62=[111110]

2

63=[111111]

2

再把0位是1的数按从小到大的顺序列 在表一里,1位是1的数也照样列在表二里,

2位是1的数照样列在表三里,余此类推。 得表如下:

表一(0位是

1数)

1

17

33

49

3

5

21

37

7

23

39

9

25

41

11

27

43

13

29

45

15

31

47

63

15

31

47

63

15

31

47

63

15

19

35

51

53 55 57 59 61

表二(1位是

1的数)

6

7

23

39

10

26

42

22

38

11

27

43

14

30

46

62

14

30

46

62

14

30

2

18

34

50

3

19

35

51 54 55 58 59

表三(2位是1的数)

5

21

37

53

9

25

41

6

22

38

7

23

39

12

28

44

13

29

45

4

20

36

52

54 55 60 61

表四(3位是1的数)

10

26

42

11

27

8

24

40

56

12

28

44

13

29

45 43

57 58 59 60 61

表五(4位是1的数)

31

i

46

47

62 63

16

24

48

56

17

25

49

57

33

41

18

26

50

58

34

42

19

27

51

59

35

43

20

28

52

21

29

53

22

30

54

23

31

55

63

39

47

60 61 62

表六(5位是

1的数)

36

44

37

45

38

46

32

40

48 49 50 51 52 53 54 55

56 57 58 59 60 61 62 63

二进制数每个数位上的数字要么是

0, 要么是1,就此两种选择。上述各表都是先 确定一个数位上的数字, 另五个数位上的数 字都有0与1两种选择,所以每张表中都有

2X 2X 2X 2X 2=32

个数。

游戏原理:对于一个数如果能确定它每 个数位上的数字是几,就能确定这个数是 多少。

女口:一个数个位上是

3,十位上是6, 百倍上是9,这个数就是963。十进制数是 这样,二进制数也是这样。

猜年龄游戏中,先让人说出那几张表中 有他的年龄数,余下各表没有,就是借此确 定二进制6位数中各个数位上的数字。 那几 张表中有

他的年龄数,就是说那几个数 位 上是1(表一中有,0位是1;表二中有,

1位是1;余此类推);余下各表没有,就 是说余下各个数位上是

0。如此,这个二进 制数是多少就确定出来了,

数也很容易。

再换算成十进制

[C5C4C3C2C1

G)]=C5x 32+C4X 16+C3X 8+C2X

4+C1X 2+C0X 1

上式是说二进制数中

0位、1位、2位、

3位、4位、5位上的1分别表示十进制数1、

2、

4、

& 16、

32。

如此,若确定了二进制数那几个数位上 的数是1,只要把这几个数位上的

1所表示 的十进制数相加,得出的和就是这个二进制 数换算成的十进制数了。

再看表一至表六左上角的数, 正好是1、

2、4、& 16、32。所以,只要说出那几张 表上有他的年龄数,就把那几张表左上角的 数相加,得出的和就是他的年龄。

例如:表二、表二、表五中有甲的年龄,

余表没有。甲年龄是多少?

解:把表二、三、五左上角的数

2、4、

16

相加得

2+4+16=22

(岁)

所以,甲是22岁。

猜年龄游戏就是先通过表上指证确定 年龄的二进制数,再换算成十进制数,这样 一个过程。

若要猜出大于63岁的人的年龄,列七 张表就行。最大的二进制七位数是

[1111111]

2=127所以,列七张表能猜出

不大于127岁年龄段内任何一个人的年龄 来。

更多推荐

姓氏,密码,二进制,摊主,游戏