![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 01:18 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]文本计算并输出 |
| 可打印版本 843 / 10 |
| 第1楼 pusofalse | 发表于 2008-07-02 04:05 |
| 银牌会员 发帖 646 积分 1,604 | |
|
[求助]文本计算并输出 文本计算输出。。。
a.txt 是加密过的一段密文,如下: I S W Z P N Q C K M Y Y Y J K A Y Y E Z F F S W E E S S P G Z X Q A H F I S W Z P N Q C K M T V Y J O A C V E H A E S A Z R L T P Q I Z M X O T Q S W M C V U D S I J G G D E U W A Z R S F X W I L K U E J Q L D A C B G D L Y J X M Y L M D Q K Z M P L D I L Q E M W F S W D P A Z E Z Q N W D Y W D Z X F S A E E A Z J D U E L V P T M C E K W S E E F U R Z F S W D P X A C Q A F K M X W A W V E Z F S D B G D L A Y U Q X G D P E K W S E E F U R Z F S W D P O U E Z K Z M Y L Q N P Q Q D E M J T Q Y G U V A Z O G R W A W P V U E Q A F J Q J G G C O M J Z A H Q A F K T J D K A D M N W P J G G C W K P K A Y E Q Z Z P T V K Z M Q G W D V F A H L T L L U S S P X A Z P G Z J G G O S D W A Z R K A E Z Q C W K Z M M C W I T L T E Z M E D A Z C A Y Q X Y Z A F J R L U Q L K U Q Q A F J Q Y W H P J T F J F L K U Q Q A F J Q Y W H P J P Z O X Y Z Z D Z M W D U M W F S W A Y W R Z J K Z M I S G B T F O S E E J G G D G R A B C E D K M M F D M D P A R Q J A H F U D K T Z O Z E Z Q Y A I T D A B C X V F A H L T L L K Z M M C W Z Z V D P S Y P J 如何计算红色字符串出现的次数。。。 注,字母完全是随机排列的,找到里面出现过一次以上的字符串。是字符串,不是字符。 然后计算出相同的字符串之间的字母个数,包括第二次出现的该字符串,但不包括第一次出现的字符串。。 举个例子来说,b.txt: a j k m l a j k s m l a b a j k 出现过两次,输出a j k,并输出“从第一个a j k结束后的第一个字母m算起,一直到第二个a j k结束”其间(即m----k)的字母个数”即5 m l a 同样出现过两次,要求同上。。。 想了半天没想出来。。求教各位达人~ 谢谢。。。 [ Last edited by pusofalse on 2008-7-2 at 04:10 AM ] |
|
| 第2楼 26933062 | 发表于 2008-07-02 06:15 |
| 银牌会员 发帖 879 积分 2,268 | |
|
仅仅对样本文件有效,太多的因素没有考虑进去
如:以 xyz 为例 xyz xyz 在同一行时 或是在文本中出现2次以上时、 或xyz单独占一行时、都不会有正确结果。 : |
|
| 第3楼 pusofalse | 发表于 2008-07-02 07:53 |
| 银牌会员 发帖 646 积分 1,604 | |
|
感谢!~
有一点遗憾。。我所希望的是只要出现一次以上的字符串,都被输出~ 范文中的红色部分,是我为了方便说明而加上的,重复的字串还有很多~ |
|
| 第4楼 zh159 | 发表于 2008-07-02 08:47 |
| 金牌会员 发帖 1,467 积分 3,687 | |
|
这种查找随机组合的估计超牛人才行了,批处理的工程量绝对不小,你这里的随机组合绝对不下万种
PS:你说的应该是出现二次以上的字符串吧,否则出现一次以上的字符串在任何时候几乎都是N多的 |
|
| 第5楼 HAT | 发表于 2008-07-02 09:19 |
| 版主 发帖 5,017 积分 9,023 | |
|
如果楼主学过《编译原理》,一定知道词法分析器是什么东西。
如果你知道用C语言写个词法分析器需要多少行代码,就知道这个批处理的工作量有多大了。 更何况还要考虑到N多的随机组合,即使能用批处理写出来,执行效率也值得担忧。 个人认为这个不适合用批处理来写。 |
|
| 第6楼 pusofalse | 发表于 2008-07-02 10:58 |
| 银牌会员 发帖 646 积分 1,604 | |
|
其实这跟维热纳尔方针有关。。。涉及到字符串出现的频率和两相同字符串之间的间隔长度。。。
可以有一种思路啊。。。仍旧是变量截取移位 先把a.txt的内容所有内容连为一句,并赋予变量a,去掉变量a中的空格,并计算其长度n。 然后第一次循环截取变量a中字串。偏移量为0,长度为2...3...4...一直到n 并把变量的值设为变量并给其赋值 然后第二次循环截取变量a中字串。偏移量为1,长度为2...3...4...一直到n-1 并把变量的值设为变量并给其赋值 如此循环n次。。。 至于把变量的值设为变量并给其赋值,就是为了判断有无重复~ 有则输出。。。 |
|
| 第7楼 danjiang | 发表于 2008-07-02 14:26 |
| 初级用户 发帖 45 积分 79 | |
|
路过,学习
|
|
| 第8楼 lxmxn | 发表于 2008-07-02 16:01 |
| 版主 发帖 4,938 积分 11,386 | |
|
用Perl写了个,思路比较简单,可能有更好的算法来提高效率。
1 use strict; 结果如下所示: :18 |
|
| 第9楼 pusofalse | 发表于 2008-07-02 16:04 |
| 银牌会员 发帖 646 积分 1,604 | |
Originally posted by lxmxn at 2008-7-2 04:01 PM: 想知道这段代码用什么工具可编译为可执行文件?~ |
|
| 第10楼 lxmxn | 发表于 2008-07-02 16:15 |
| 版主 发帖 4,938 积分 11,386 | |
|
perlcc
perl2exe Perl Dev Kit |
|
| 第11楼 pusofalse | 发表于 2008-07-03 01:08 |
| 银牌会员 发帖 646 积分 1,604 | |
|
谢谢 ^_^
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |