中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-09 04:56
47,811 主题排行 / 349,895 发帖 / 今日 0 篇 / 48,253 会员排行
DOS批处理 & 脚本技术(批处理室) » 对称输出加分题(具有挑战性)
可打印版本  4,417 / 64
第31楼 bat-zw 发表于 2008-07-11 15:37
金牌会员 发帖 1,276 积分 3,105
Originally posted by 26933062 at 2008-7-11 15:18:
再来一个,思路清晰点的。
第32楼 26933062 发表于 2008-07-11 15:40
银牌会员 发帖 879 积分 2,268
哦?
如何不通用?
第33楼 bat-zw 发表于 2008-07-11 15:48
金牌会员 发帖 1,276 积分 3,105
for /l %%a in (1 2 19) do (。。。
就这句。
第34楼 26933062 发表于 2008-07-11 16:14
银牌会员 发帖 879 积分 2,268
Originally posted by zw19750516 at 2008-7-11 15:48:
for /l %%a in (1 2 19) do (。。。
就这句。

对位数加了个判断和计算,这样应该可以了吧?
第35楼 terse 发表于 2008-07-11 16:50
银牌会员 发帖 946 积分 2,404
我有分不
第36楼 bat-zw 发表于 2008-07-11 17:01
金牌会员 发帖 1,276 积分 3,105
Originally posted by terse at 2008-7-11 16:50:
我有分不
第37楼 quya 发表于 2008-07-11 17:03
高级用户 发帖 172 积分 558 来自 江苏
我这个又是产生临时文件的, 初学者的思路, 不过通用性很好!



我自我感觉通用性最好,不相信可以验证, 高手可以按照我思路简化下, 我写的东西经常性带有冗余代码.

不产生临时文件的写法, 其实更简单, 我主要用惯了临时文件。



[ Last edited by quya on 2008-7-11 at 07:33 PM ]
第38楼 26933062 发表于 2008-07-11 18:38
银牌会员 发帖 879 积分 2,268
再来


[ Last edited by 26933062 on 2008-7-13 at 11:10 AM ]
第39楼 terse 发表于 2008-07-11 20:35
银牌会员 发帖 946 积分 2,404
Originally posted by zw19750516 at 2008-7-11 17:01:

for /l %%i in (0 1 9)...
不通用,请兄弟仔细看下我顶楼的说明。

当输入7时,输出如下:
#######7## | ##c#######
当输入a5时,输出如下:
#####5###9 | a###e#####
当输入12j时,输出如下:
012####### | #######hij
我想我的代码做到了
小弟愚笨 想不通那里不对 望zw19750516兄明示
第40楼 quya 发表于 2008-07-11 22:26
高级用户 发帖 172 积分 558 来自 江苏
楼上的, 你的不通用性在于:

1. 如果两边少点字符, 你要修改代码多处
2. 最大的缺点是, 如果左右边互换, 你又要改,如果左边逆序呢? 如果左边有字母呢? 如果两边的字符毫无规律呢?

所以确实不通用。
第41楼 bat-zw 发表于 2008-07-12 10:54
金牌会员 发帖 1,276 积分 3,105
严重同意老土的,还有就是请兄弟每次解我的题时先看下顶楼的要求是不是改变了,因为本人出题的思路开始可能会欠慎密,但我会不断修改的,也难为兄弟们了。
第42楼 bat-zw 发表于 2008-07-12 10:58
金牌会员 发帖 1,276 积分 3,105
:loop
set .!str:~0,1!=!str:~-1,1!
set .!str:~-1,1!=!str:~0,1!
set str=!str:~1,-1!
set /a nnn+=1
if defined str goto loop

小楼兄这次的思路和我的第一个方案是一样的都是从两头同时截取字符,只是兄在处理技巧上更胜我一筹,加入了以本身为变量的赋值,学习了。

[ Last edited by zw19750516 on 2008-7-12 at 11:35 AM ]
第43楼 quya 发表于 2008-07-12 12:36
高级用户 发帖 172 积分 558 来自 江苏
你们的代码我基本看不懂, 我看见 !变量!什么的就头痛, 所以不到万不得已就不用, 可以用CALL代替的就代替。(CALL也是最近才学的)

这次主动用上延迟变量算是我破天荒第一次了,实在想不出啥办法, 一般我都是抄人家延迟变量的代码的。

另外,你们的输入大多数要加空格隔开的, 不知道为什么,我想凭你们的技巧,肯定可以用别的办法,加个空格输入的时候多别扭啊。
第44楼 bat-zw 发表于 2008-07-12 12:56
金牌会员 发帖 1,276 积分 3,105
另外,你们的输入大多数要加空格隔开的, 不知道为什么,我想凭你们的技巧,肯定可以用别的办法,加个空格输入的时候多别扭啊。

老土,要解决是不是问题(我25楼的代码就不是加空格输入的),但这样会使代码显得繁杂,本题的核心问题也不在对这个的处理上,因此,为了更加突出解题的核心代码,我第二个方案采用了加空格输入的办法。
第45楼 quya 发表于 2008-07-12 13:36
高级用户 发帖 172 积分 558 来自 江苏
我不敢苟同楼主观点。

综观最近几天的出题解题,我发现大家都有点走火入魔了,重技巧而轻实用。

程序最终是用来方便自己和大家的, 所以首先要人机界面友好,缺省设置合理,符合大多数人使用习惯,可以有个性化设置,其次兼容性好,再次就是运行速度快,占内存和硬盘空间少。

人机界面友好的例子如下:

1. 比如这个题目输入的时候一定要加个空格, 这就不爽
2. 比如运行的时候一开始一定要点一个什么东西,也不爽。
等等

像此类问题,用户每用一次都要去适应它就不好了, 不如把程序编得复杂点, 因为程序只编一次(当然调试是多次的), 但用户要用N次。我们公司用的EPR程序就一直在折磨我。

技巧应该用在的地方:

1. 不用该技巧无法编程的
2. 能显著改善运行速度的,比如循环语句的优化, 某些只运行一次的代码就无所谓了,如果过于追求技巧将会使代码维护困难。
3. 该用技巧的时候不用, 比如现在编程的模块化,使得一些编大型程序的程序员不动脑筋, 最后编的程序一点都没有人性化,合理化,例如运行结果会出现3.00头猪之类的结果。把数据库里计算机自动生成的ID等当成搜索条件,而用户需要的好记的搜索条件却很难找到,不隐藏根本和用户不打交道的字段等等。

暂时写这么多, 其实实际中我碰到的问题实在太多太多。
上一页  1 2 3 4 5  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023