![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-10 18:31 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]谁能写一个类似街头"猜姓氏"的批处理 |
| 可打印版本 4,715 / 17 |
| 第1楼 jmz573515 | 发表于 2007-01-06 04:14 |
| 银牌会员 发帖 464 积分 1,212 | |
|
[求助]谁能写一个类似街头"猜姓氏"的批处理 以前我看过有人在街头用几张写了"姓氏"(有的可能也不是姓氏)卡片,只要你指出你的姓氏在哪两张卡片里,所谓"算命"人就能指出你的姓氏,到现在也没有弄清楚是什么原理,希望哪位能写一个这样的批处理(VBS),再说一下是什么原理,谢谢!
|
|
| 第2楼 vkill | 发表于 2007-01-06 05:31 |
| 金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽 | |
|
说的不够清楚,我也没有见过
|
|
| 第3楼 namejm | 发表于 2007-01-06 06:25 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
原理似乎是这样:两张卡片中,其中一张的内容绝对不可能作为姓氏出现。
|
|
| 第4楼 NaturalJ0 | 发表于 2007-01-06 06:29 |
| 银牌会员 发帖 533 积分 1,181 | |
|
似乎挺有意思,小时候看过,但不知道原理。
|
|
| 第5楼 qzwqzw | 发表于 2007-01-06 14:56 |
| 银牌会员 发帖 636 积分 2,343 | |
|
实际上这是一个表的编码与解码问题
所有的姓氏构成一个表 其中的每个姓氏都是其中的一个项 如何对表项进行编码以利于快速解码(或者叫索引)有很多方法 --------------------------------- 最简单的是顺序编号,然后按编号顺序解码或索引 但效率最低,最差情况下可能要遍历整个表 没有一个算命师会这样干的 -------------------------------------------------- 再复杂一些的就是二维编码,然后按维度值索引 效率相对高一些,最差情况下要索引二个维度的总和 比如一个有100项的表,可以分解为10*10的二维矩阵 此时最差要索引10+10次 有些现代的低级算命师采用类似的算法 很容易被人识破 ------------------------------------- 更复杂一些的就是二进制编码,实际上它是一种多维编码 将二维的长度数变为维度数 比如一个100项的表会被分解为2*2*2*2*2*2*2的多维矩阵 对矩阵的索引就是一个七位的二进制数 每次索引都需要七次,没有最好最坏的说法 大多数算命师是采用这种方法或者其变形 ----------------------------------------------------------- 有些算命师只让人看三四张表便能确定姓氏 另外很多情况下只要确定两张表中有姓氏项就可以确定姓氏 这是因为他们将频率较高的姓氏采用了更短的编码 在这方面做得比较有名的算法是霍夫曼树生成 根据各项的概率确定其编码,频率最高的码长最短 ----------------------------------------------------------------- 下面是一个表的编码与解码的例子 为了算法的简便,仅采用了文中的第三种方法 如果它读取的table.txt是个每行含有一个姓氏的文本文件 那么它就是一个猜姓氏的程序 至于姓氏表,我是从下面给出新百家姓经过简单替换得到的 http://zhidao.baidu.com/question/5479397.html |
|
| 第6楼 lxmxn | 发表于 2007-01-06 16:20 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by qzwqzw at 2007-1-6 01:56: 不得不佩服兄的编程水平,但是我在测试的时候,出现了一点小问题。 当我以“有”为姓氏时,这段代码判断为我姓“施”,不知何故。 我的 table.txt 文件如下: |
|
| 第7楼 qzwqzw | 发表于 2007-01-06 23:13 |
| 银牌会员 发帖 636 积分 2,343 | |
|
没想到真有人将table表发上来
我测试时的表仅100行也没敢往上发 太占阅读空间了 ----------------------------------------------------- “有”的问题是你挑花了眼 请注意有无顺序分别是 y y y n y n n n n y 将这个顺序反过来 再将y变为1,n变为0 就是1000010111 转换为十进制就是535 它就是“有”的行编号 -------------------------------------------------------- 另外,你的表很有问题 因为没有正确的处理复姓和一些冗余字 造成了重复项的出现 而这会影响项的索引,造成判断失误 而且老百家姓的表太大了 需要九次判断,很容易让人不耐烦的 而且表的编码速度也被降低了 |
|
| 第8楼 lxmxn | 发表于 2007-01-07 01:23 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by qzwqzw at 2007-1-6 10:13: 的确。 当初测试的时候,也只是将百度知道吧页面上的姓氏表复制下来,然后自己写了一个批处理生成了这个 table.txt 文件,并没有考虑复性和冗余的姓氏。 兄的这个批程序的算法值得学习啊。 |
|
| 第9楼 jmz573515 | 发表于 2007-01-07 05:45 |
| 银牌会员 发帖 464 积分 1,212 | |
|
不错,可是这个和我以前写的猜年龄的原理是一样的。
我觉得“猜姓氏”的不是这个原理。(我记得是只要确认两次就能说出你的姓名) 不知道还有没有别更好的方法? |
|
| 第10楼 26933062 | 发表于 2007-01-07 14:21 |
| 银牌会员 发帖 879 积分 2,268 | |
|
其实原理很简单,我以前在街头见过,回来后用数字和我的同事玩,他们佩服的五体投地.
道理就一个,他给你看的两张表里,只有一个姓是重复的. |
|
| 第11楼 tghksj | 发表于 2007-01-07 23:29 |
| 社区乞丐 发帖 90 积分 -49 | |
|
又是qzwqzw.....又有的看了.....痛苦啊~~......
|
|
| 第12楼 tghksj | 发表于 2007-01-09 03:45 |
| 社区乞丐 发帖 90 积分 -49 | |
|
lxmxn 老师,麻烦您能不能把您的table.txt附件一下,这样太眼晕了......
qzwqzw 老师 你把问题复杂化了 江湖术士根本不可能对表格进行多维编码.有您这样头脑是绝对不会做江湖术士的 :) 此题只不过是一个平面表格, "经线个数 * 纬线个数 = 网点个数" [ Last edited by tghksj on 2007-1-8 at 03:31 PM ] |
|
| 第13楼 52enjoy | 发表于 2007-01-09 04:12 |
| 初级用户 发帖 8 积分 20 | |
|
不要吧~~~看的我头大了~~~救命啊~~~~~
|
|
| 第14楼 lxmxn | 发表于 2007-01-10 00:09 |
| 版主 发帖 4,938 积分 11,386 | |
lxmxn 老师,麻烦您能不能把您的table.txt附件一下,这样太眼晕了...... 直接将我发的那段保存为table.txt文件就够了。 [ Last edited by lxmxn on 2007-1-9 at 11:11 AM ] |
|
| 第15楼 tghksj | 发表于 2007-01-10 03:25 |
| 社区乞丐 发帖 90 积分 -49 | |
|
晕~不知道是不是我的表达能力有问题,
我说你这样占500多行的空间啊~~~能不能打成附件,别直接显示啊??? 太占地方了~拉半天才能拉过去啊!!! 还有,保存什么啊? 你的那个表本身就有问题,根本是个错误的表,还叫我保存干什么? [ Last edited by tghksj on 2007-1-9 at 02:27 PM ] |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |