中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]谁能写一个类似街头"猜姓氏"的批处理
« [1] [2] »
作者:
标题: [求助]谁能写一个类似街头"猜姓氏"的批处理 上一主题 | 下一主题
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『楼 主』:  [求助]谁能写一个类似街头"猜姓氏"的批处理

以前我看过有人在街头用几张写了"姓氏"(有的可能也不是姓氏)卡片,只要你指出你的姓氏在哪两张卡片里,所谓"算命"人就能指出你的姓氏,到现在也没有弄清楚是什么原理,希望哪位能写一个这样的批处理(VBS),再说一下是什么原理,谢谢!

2007-1-6 04:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 2 楼』:  

说的不够清楚,我也没有见过

2007-1-6 05:31
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 3 楼』:  

  原理似乎是这样:两张卡片中,其中一张的内容绝对不可能作为姓氏出现。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2007-1-6 06:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 4 楼』:  

似乎挺有意思,小时候看过,但不知道原理。

2007-1-6 06:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 5 楼』:  

实际上这是一个表的编码与解码问题

所有的姓氏构成一个表

其中的每个姓氏都是其中的一个项

如何对表项进行编码以利于快速解码(或者叫索引)有很多方法

---------------------------------

最简单的是顺序编号,然后按编号顺序解码或索引

但效率最低,最差情况下可能要遍历整个表

没有一个算命师会这样干的

--------------------------------------------------

再复杂一些的就是二维编码,然后按维度值索引

效率相对高一些,最差情况下要索引二个维度的总和

比如一个有100项的表,可以分解为10*10的二维矩阵

此时最差要索引10+10次

有些现代的低级算命师采用类似的算法

很容易被人识破

-------------------------------------

更复杂一些的就是二进制编码,实际上它是一种多维编码

将二维的长度数变为维度数

比如一个100项的表会被分解为2*2*2*2*2*2*2的多维矩阵

对矩阵的索引就是一个七位的二进制数

每次索引都需要七次,没有最好最坏的说法

大多数算命师是采用这种方法或者其变形

-----------------------------------------------------------

有些算命师只让人看三四张表便能确定姓氏

另外很多情况下只要确定两张表中有姓氏项就可以确定姓氏

这是因为他们将频率较高的姓氏采用了更短的编码

在这方面做得比较有名的算法是霍夫曼树生成

根据各项的概率确定其编码,频率最高的码长最短

-----------------------------------------------------------------

下面是一个表的编码与解码的例子

为了算法的简便,仅采用了文中的第三种方法

如果它读取的table.txt是个每行含有一个姓氏的文本文件

那么它就是一个猜姓氏的程序

至于姓氏表,我是从下面给出新百家姓经过简单替换得到的

http://zhidao.baidu.com/question/5479397.html
:: 猜姓氏的延伸——表的编码与解码
:: qzwqzw @ http://bbs.cn-dos.net
:: 2007-01-06 1:16 Revision 1
@echo off
setlocal

for /f %%f in (table.txt) do (
    set /a i+=1
    set rdx=1
    call :encode %%i%% %%f
)
set rdx=1
call :decode
cls
echo.
echo 你的选中项为:
echo.
find "" /v /n < table.txt | find "[%idx%]"
del *.tbl
pause
goto :eof

:encode
set /a val=%1 ^& rdx
if %val% neq 0 set/p=%2  <nul>>%rdx%.tbl
set /a rdx*=2
if %rdx% leq %1 goto encode
goto :eof

:decode
cls
type %rdx%.tbl
echo.
echo.
set ch=
set /p ch=上表中是否有选中项(y为有,否则为无):
if /i "%ch%"=="y" set /a idx+=rdx
set /a rdx*=2
if %rdx% leq %i% goto decode
goto :eof


   此帖被 +44 点积分       点击查看详情   
评分人:【 无奈何 分数: +20  时间:2007-1-7 00:27
评分人:【 lxmxn 分数: +20  时间:2007-1-7 01:23
评分人:【 jmz573515 分数: +4  时间:2007-1-7 05:42


2007-1-6 14:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by qzwqzw at 2007-1-6 01:56:
实际上这是一个表的编码与解码问题

所有的姓氏构成一个表

其中的每个姓氏都是其中的一个项

如何对表项进行编码以利于快速解码(或者叫素...

  不得不佩服兄的编程水平,但是我在测试的时候,出现了一点小问题。

  当我以“有”为姓氏时,这段代码判断为我姓“施”,不知何故。

  我的 table.txt 文件如下:

















































































































































































































羿























































宿

怀










































寿













































广


































































































































西






















































西


























   此帖被 -1 点积分    点击查看详情   
评分人:【 tghksj 分数: -1  时间:2007-1-10 23:36


2007-1-6 16:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 7 楼』:  

没想到真有人将table表发上来

我测试时的表仅100行也没敢往上发

太占阅读空间了

-----------------------------------------------------

“有”的问题是你挑花了眼

请注意有无顺序分别是

y y y n y n n n n y

将这个顺序反过来

再将y变为1,n变为0

就是1000010111

转换为十进制就是535

它就是“有”的行编号

--------------------------------------------------------

另外,你的表很有问题

因为没有正确的处理复姓和一些冗余字

造成了重复项的出现

而这会影响项的索引,造成判断失误

而且老百家姓的表太大了

需要九次判断,很容易让人不耐烦的

而且表的编码速度也被降低了

2007-1-6 23:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 8 楼』:  



  Quote:
Originally posted by qzwqzw at 2007-1-6 10:13:
没想到真有人将table表发上来

我测试时的表仅100行也没敢往上发

太占阅读空间了

-----------------------------------------------------

“有”的问题是你 ...


  的确。

  当初测试的时候,也只是将百度知道吧页面上的姓氏表复制下来,然后自己写了一个批处理生成了这个 table.txt 文件,并没有考虑复性和冗余的姓氏。

  兄的这个批程序的算法值得学习啊。


2007-1-7 01:23
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 9 楼』:  

不错,可是这个和我以前写的猜年龄的原理是一样的。
我觉得“猜姓氏”的不是这个原理。(我记得是只要确认两次就能说出你的姓名)
不知道还有没有别更好的方法?

2007-1-7 05:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 10 楼』:  

其实原理很简单,我以前在街头见过,回来后用数字和我的同事玩,他们佩服的五体投地.
道理就一个,他给你看的两张表里,只有一个姓是重复的.

2007-1-7 14:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tghksj
社区乞丐

此图片另存后死机



积分 -49
发帖 90
注册 2006-12-2
状态 离线
『第 11 楼』:  

又是qzwqzw.....又有的看了.....痛苦啊~~......

   此帖被 -17 点积分        点击查看详情   
评分人:【 lxmxn 分数: -16  时间:2007-1-19 05:21
评分人:【 分数: -1  时间:2007-4-9 07:08




我的网络笔记本.[color=Red]非联系本人请勿访问![/color]http://w.vicp.net[img]http://zhenlove.com.cn/cndos/fileup/files/QM2.jpg[/img]
2007-1-7 23:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tghksj
社区乞丐

此图片另存后死机



积分 -49
发帖 90
注册 2006-12-2
状态 离线
『第 12 楼』:  

lxmxn 老师,麻烦您能不能把您的table.txt附件一下,这样太眼晕了......

qzwqzw 老师 你把问题复杂化了

江湖术士根本不可能对表格进行多维编码.有您这样头脑是绝对不会做江湖术士的 :)

此题只不过是一个平面表格, "经线个数 * 纬线个数 = 网点个数"
:: tghksj @ http://bbs.cn-dos.net
:: tghksj @ http://w.vicp.net
@ECHO %dbg% OFF
setlocal ENABLEDELAYEDEXPANSION
MODE CON COLS=120 LINES=30

SET BJX=赵 钱 孙 李 周 吴 郑 王 冯 陈 诸 卫 蒋 沈 韩 杨 朱 秦 尤 许 何 吕 施 张 孔 曹 严 华 金 魏 陶 姜 戚 谢 邹 喻 柏 水 窦 章 云 苏 潘 葛 奚 范 彭 郎 鲁 韦 昌 马 苗 凤 花 方 俞 任 袁 柳 酆 鲍 史 唐 费 廉 岑 薛 雷 贺 倪 汤 滕 殷 罗 毕 郝 邬 安 常 乐 于 时 傅 皮 卡 齐 康 伍 余 元 卜 顾 孟 平 黄 和 穆 萧 尹 姚 邵 堪 汪 祁 毛 禹 狄 米 贝 明 臧 计 伏 成 戴 谈 宋 茅 庞 熊 纪 舒 屈 项 祝 董 粱 杜 阮 蓝 闵 席 季 麻 强 贾 路 娄 危 江 童 颜 郭 梅 盛 林 刁 钟 徐 邱 骆 高 夏 蔡 田 樊 胡 凌 霍 虞 万 支 柯 咎 管 卢 莫 经 房 裘 缪 干 解 应 宗 丁 宣 贲 邓 郁 单 杭 洪 包 诸 左 石 崔 吉 钮 龚 程 嵇 邢 滑 裴 陆 荣 翁 荀 羊 於 惠 甄 魏 家 封 芮 羿 储 靳 汲 邴 糜 松 井 段 富 巫 乌 焦 巴 弓 牧 隗 山 谷 车 侯 宓 蓬 全 郗 班 仰 秋 仲 伊 宫 宁 仇 栾 暴 甘 钭 厉 戎 祖 武 符 刘 景 詹 束 龙 叶 幸 司 韶 郜 黎 蓟 薄 印 宿 白 怀 蒲 台 从 鄂 索 咸 籍 赖 卓 蔺 屠 蒙 池 乔 阴 郁 胥 能 苍 双 闻 莘 党 翟 谭 贡 劳 逄 姬 申 扶 堵 冉 宰 郦 雍 却 璩 桑 桂 濮 牛 寿 通 边 扈 燕 冀 郏 浦 尚 农 温 别 庄 晏 柴 翟 阎 充 慕 连 茹 习 宦 艾 鱼 容 向 古 易 慎 戈 廖 庚 终 暨 居 衡 步 都 耿 满 弘 匡 国 文 寇 广 禄 阙 东 殴 殳 沃 利 蔚 越 夔 隆 师 巩 厍 聂 晁 勾 敖 融 冷 訾 辛 阚 那 简 饶 空 曾 毋 沙 乜 养 鞠 须 丰 巢 关 蒯 相 查 后 荆 红 游 竺 权 逯 盖 益 桓 公 万俟 司马 上官 欧阳 夏侯 诸葛 闻人 东方 赫连 皇甫 尉迟 公羊 澹台 公冶 宗政 濮阳 淳于 单于 太叔 申屠 公孙 仲孙 轩辕 令狐 钟离 宇文 长孙 慕容 鲜于 闾丘 司徒 司空 亓官 司寇 仉督 子车 颛孙 端木 巫马 公西 漆雕 乐正 壤驷 公良 拓拔 夹谷 宰父 谷粱 晋楚 闫法 汝鄢 涂钦 段干 百里 东郭 南门 呼延 归海 羊舌 微生 岳帅 缑亢 况后 有琴 梁丘 左丘 东门 西门 商牟 佘佴 伯赏 南宫 墨哈 谯笪 年爱 阳佟

SET J=0
SET W=0

::对姓氏表进行22*22的经纬划分.每一个交叉点代表一个姓氏.
FOR %%i IN (%BJX%) DO (
                       IF !J! == 0 SET /P=!W!: <NUL
                       SET /P=%%i <NUL
                       SET J!J!W!W!=%%i
                       CALL SET J!J!=%%J!J!%% %%i
                       IF !J! == 21 (SET /A W+=1 & SET J=-1 & ECHO.)
                       SET /a J+=1
                       )
ECHO. & SET /P W=请选择你的姓氏所在标签号: & CLS
FOR /L %%i IN (0,1,21) DO (ECHO %%i: !J%%i!)
ECHO. & SET /P J=请选择你的姓氏所在标签号: & CLS
ECHO 你的姓氏为: !J%J%W%W%!
[ Last edited by tghksj on 2007-1-8 at 03:31 PM ]

   此帖被 -16 点积分        点击查看详情   
评分人:【 lxmxn 分数: -16  时间:2007-1-19 22:33




我的网络笔记本.[color=Red]非联系本人请勿访问![/color]http://w.vicp.net[img]http://zhenlove.com.cn/cndos/fileup/files/QM2.jpg[/img]
2007-1-9 03:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
52enjoy
初级用户





积分 20
发帖 8
注册 2007-1-8
状态 离线
『第 13 楼』:  

不要吧~~~看的我头大了~~~救命啊~~~~~

2007-1-9 04:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 14 楼』:  



  Quote:
lxmxn 老师,麻烦您能不能把您的table.txt附件一下,这样太眼晕了......


  直接将我发的那段保存为table.txt文件就够了。


[ Last edited by lxmxn on 2007-1-9 at 11:11 AM ]

2007-1-10 00:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tghksj
社区乞丐

此图片另存后死机



积分 -49
发帖 90
注册 2006-12-2
状态 离线
『第 15 楼』:  

晕~不知道是不是我的表达能力有问题,

我说你这样占500多行的空间啊~~~能不能打成附件,别直接显示啊???

太占地方了~拉半天才能拉过去啊!!!



还有,保存什么啊?
你的那个表本身就有问题,根本是个错误的表,还叫我保存干什么?

[ Last edited by tghksj on 2007-1-9 at 02:27 PM ]



我的网络笔记本.[color=Red]非联系本人请勿访问![/color]http://w.vicp.net[img]http://zhenlove.com.cn/cndos/fileup/files/QM2.jpg[/img]
2007-1-10 03:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: