![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 05:56 |
共 47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 对称输出加分题(具有挑战性) |
| 可打印版本 4,423 / 64 |
| 第46楼 qzwqzw | 发表于 2008-07-12 13:55 |
| 银牌会员 发帖 636 积分 2,343 | |
|
老土想得太多了
只有针对具体问题的解题代码 才需要考虑应用中的很多问题 比如异常处理、界面优化、缺省值等等 而现在讨论的只是一些原型化的代码 根本谈不上如何去应用 只需要抽象出问题的核心然后解决掉它就可以了 |
|
| 第47楼 terse | 发表于 2008-07-13 03:11 |
| 银牌会员 发帖 946 积分 2,404 | |
|
无须输入空格
|
|
| 第48楼 bat-zw | 发表于 2008-07-13 09:33 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
这回对了。
兄这个if defined ..!.%st:~,1%!真用得叹为观止啊,学习了。 |
|
| 第49楼 quya | 发表于 2008-07-13 09:53 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
还是要挑点毛病。
其他的我看不懂, 就这句 set str=27j834fi56a901bghcde 好像还是不太通用啊。 同志们,请原谅我,我水平不行,挑刺还可以。 |
|
| 第50楼 bat-zw | 发表于 2008-07-13 10:14 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by quya at 2008-7-13 09:53: 老土,这个set是根据情况来的,如要对称的是数字和字母,就set str=数字+字母,如要对称的是数字和汉字,就set str=数字+汉字,如要对称关系是没有规律的,就如terse兄如此set了。 |
|
| 第51楼 quya | 发表于 2008-07-13 10:26 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
Originally posted by zw19750516 at 2008-7-13 10:14 AM: 我对你题的理解是对称和数字,字母无关。 只要找到输入的值, 就在那个位置显示, 然后再在那个位置的对称位置显示。数字和字母都可以乱序。 所以我对你们的解题思路都很疑惑。 比如像下面这样乱序和重复的, (有2个0), 也能显示正确。 但我目前还无法解决原来字符中有空格的。输入的时候倒是可以有空格。 [ Last edited by quya on 2008-7-13 at 10:35 AM ] |
|
| 第52楼 bat-zw | 发表于 2008-07-13 10:39 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
是可以乱序啊,你甚至还可以通过代码来生成,如:
|
|
| 第53楼 quya | 发表于 2008-07-13 10:55 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
那楼主通过你的乱序再检验一下所有的解题看看。
程序只能改 set code=任意字符 这句, 任意字符的意思是原来给定是什么,就写什么。 [ Last edited by quya on 2008-7-13 at 10:58 AM ] |
|
| 第54楼 26933062 | 发表于 2008-07-13 11:13 |
| 银牌会员 发帖 879 积分 2,268 | |
|
呵呵,老土还真是执著啊,
你试试 38 楼的代码, 已经对人机交互作了处理,可以不输入空格,也可以输入。 缺点是: 任意字符中不能有重复的。 |
|
| 第55楼 quya | 发表于 2008-07-13 11:32 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
Originally posted by 26933062 at 2008-7-13 11:13 AM: 试了下 当 set "str=012t456789abcd6fghi3" 输入36 不能正确显示。 而我37楼代码完全准确, 总算胜了众高手一回。 只是感到自己还不算太笨,没别的意思啊。 [ Last edited by quya on 2008-7-13 at 11:34 AM ] |
|
| 第56楼 26933062 | 发表于 2008-07-13 11:42 |
| 银牌会员 发帖 879 积分 2,268 | |
Originally posted by quya at 2008-7-13 11:32: 都说了不能有重复的,你这里有两个6啊? |
|
| 第57楼 quya | 发表于 2008-07-13 19:38 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
又想了一个, 这个应该是最简单的了。连延迟变量都没用。
其实我想用延迟变量, 但不会用, 刚开始我想类似下边这样写法。 我期望的结果是 变量 String 慢慢变短,但第一步不成功, 后边的构思就全完了。我真的一直不明白为什么我达不到我要的结果, 高人请指点, 谢谢! [ Last edited by quya on 2008-7-14 at 10:39 AM ] |
|
| 第58楼 bat-zw | 发表于 2008-07-14 08:38 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
老土,代码第一是考虑效率,第二才是简洁,你这个方案存在效率问题,同时('echo %str%')可以修改为("%str%")。
|
|
| 第59楼 quya | 发表于 2008-07-14 10:28 |
| 高级用户 发帖 172 积分 558 来自 江苏 | |
|
我57楼这么简单的代码存在效率问题? 试简析下, 谢谢.
%str%已按你建议修改, 但我依旧不知其所以然. 当初光写了%str% ,程序把这个变量当文件, 才ECHO, 不知道可以加 "". [ Last edited by quya on 2008-7-14 at 10:41 AM ] |
|
| 第60楼 bat-zw | 发表于 2008-07-14 10:39 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
效率问题出在这里:echo %input%|findstr [%string:~-1%%string:~0,1%]>nul||set str=#%str:~1,-1%%#
在批处理中要尽量用if做判断,少用findstr。 |
|
| 上一页 1 2 3 4 5 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |