中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一道文本输出题(视完成程序加分)
作者:
标题: 一道文本输出题(视完成程序加分) 上一主题 | 下一主题
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『楼 主』:  一道文本输出题(视完成程序加分) 使用 LLM 解释/回答一下

已知字符串abcdabcdabcdabcd
通过批处理每次随机减少一个字符,输出为如下形式:
一、第一个做出来的予以加3分
----------------------------------------------------------------------------------------------------------

abcdabcdabcdabcd
abcdabcdabcdbcd
abcdabcdbcdbcd
abcdabcdbcbcd
abcdacdbcbcd
bcdacdbcbcd
bcdacdcbcd
bcdaccbcd
bcdacbcd
bcdacbd
bcdacd
bcacd
bccd
bcd
bc
b

二、第一个做出来的加7分
----------------------------------------------------------------------------------------------------------

abcdabcdabcdabcd
abcdabdabcdabcd
abcdbdabcdabcd
abcdbdabdabcd
abcdbdabdabc
abcddabdabc
abcddadabc
abddadabc
abddadab
addadab
adadab
addab
ddab
dab
ab
b

三、第一个做出来的加15分
----------------------------------------------------------------------------------------------------------

abcdabcdabcdabcd abcdabcdabcdabcd
abcdabdabcdabcd abcdabdabcdabcd
abcdbdabcdabcd abcdbdabcdabcd
abcdbdabdabcd abcdbdabdabcd
abcdbdabdabc abcdbdabdabc
abcddabdabc abcddabdabc
abcddadabc abcddadabc
abddadabc abddadabc
abddadab abddadab
addadab addadab
adadab adadab
addab addab
ddab ddab
dab dab
ab ab
b b
ab ab
dab dab
ddab ddab
addab addab
adadab adadab
addadab addadab
abddadab abddadab
abddadabc abddadabc
abcddadabc abcddadabc
abcddabdabc abcddabdabc
abcdbdabdabc abcdbdabdabc
abcdbdabdabcd abcdbdabdabcd
abcdbdabcdabcd abcdbdabcdabcd
abcdabdabcdabcd abcdabdabcdabcd
abcdabcdabcdabcd abcdabcdabcdabcd


Last edited by zw19750516 on 2008-7-10 at 11:55 AM ]



批处理之家新域名:www.bathome.net
2008-7-10 10:39
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

abcdabcdabcdabcd的长度是固定的还是可变的?



2008-7-10 10:47
查看资料  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

本来是想专门为新手出这道题的,现在看来是事与愿违了。

Last edited by zw19750516 on 2008-7-10 at 11:53 AM ]



批处理之家新域名:www.bathome.net
2008-7-10 10:50
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

1.
@echo off&setlocal enabledelayedexpansion
set str=abcdabcdabcdabcd
set n=17
:1
set/a n-=1
set/a m=%random%%%%n%,x=n-m
set str=!str:~,%m%!!str:~-%x%!
echo %str%
if %n% gtr 1 goto 1
pause


   此帖被 +3 点积分     点击查看详情   
评分人:【 bat-zw 分数: +3  时间:2008-7-10 13:09




心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-7-10 12:47
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

2.
@echo off&setlocal enabledelayedexpansion
set str=abcdabcdabcdabcd
set n=17
:1
set/a n-=1,y+=1
set/a m=%random%%%%n%,x=n-m
set str=!str:~,%m%!!str:~-%x%!
for /l %%a in (1 1 %y%) do set/p= <nul
set/p=%str%<nul
echo.
if %n% gtr 1 goto 1
pause


Last edited by pusofalse on 2008-7-10 at 12:57 PM ]

   此帖被 +5 点积分      点击查看详情   
评分人:【 bat-zw 分数: +5  时间:2008-7-10 13:10




心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-7-10 12:55
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

3.
@echo off&setlocal enabledelayedexpansion
set str=abcdabcdabcdabcd
set/a n=17,y=0,z=16,l=1
:1
set/a n-=1,y+=1
set/a m=%random%%%%n%,x=n-m
set str=!str:~,%m%!!str:~-%x%!
for /l %%a in (1 1 %y%) do set/p= <nul
set/p=%str%<nul
set/p= %str%<nul
set str%n%=%str% %str%
echo.
if %n% gtr 1 goto 1

:2
set/a l+=1,z-=1
for /l %%a in (1 1 %z%) do set/p= <nul
set/p=!str%l%!<nul
echo.
if %z% gtr 1 goto 2
pause


   此帖被 +15 点积分         点击查看详情   
评分人:【 bat-zw 分数: +15  时间:2008-7-10 13:16




心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-7-10 13:07
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
quya
高级用户

五星老土


积分 558
发帖 172
注册 2003-2-9
来自 江苏
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

解题的应该不是新手了,都混到银牌会员了.

这个题目字数固定的话应该不是太难, 如果字数不固定, 那么可以借用论坛内有人曾经发过的计算字符串长度程序, 其实那个程序就已经含有了这样的编程思想.

http://www.cn-dos.net/forum/viewthread.php?tid=24745

Last edited by quya on 2008-7-10 at 01:20 PM ]



我怎么找不到一个比我注册日期早的人? 难道我是传说中的超级管理员? 其实我只是个潜水冠军而已.
2008-7-10 13:15
查看资料  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

是啊,我就是想新手们多来思考思考,也多动动手。可是。。。。



批处理之家新域名:www.bathome.net
2008-7-10 13:17
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

在前辈们面前我永远只是新手而已。。。解题是因为以前从没涉猎过类似的题目,想知道自己能力,加不加分无所谓,我不是为了这个,能够有新的思路才是最重要的。。^_^



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-7-10 13:18
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

Originally posted by pusofalse at 2008-7-10 13:18:
在前辈们面前我永远只是新手而已。。。解题是因为以前从没涉猎过类似的题目,想知道自己能力,加不加分无所谓,我不是为了这个,能够有新的思路才是最重要的。。^_^

我这所以还是为你加了分是因为你那个set n=17,说老实话,我是没想到的,我的代码比你的复杂。



批处理之家新域名:www.bathome.net
2008-7-10 13:20
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
bat-zw
金牌会员

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

都不敢拿出手了,但是思路还是不同,代码也通用,还是发出来一起研究下了:

@echo off&setlocal enabledelayedexpansion
set str=abcdabcdabcdabcd
set code=%str%
echo %code% %code%
:lp
set a=%str:~,1%&set /a num+=1
set var=%var% %a%&set str=%str:~1%
if defined str goto lp
set n=%num%
:loop
set "kong= "
set /a a=%random%%%%n%+1,b=num-n
for /l %%i in (1,1,%b%) do set kong= !kong!
for %%i in (%var%) do (
set /a m+=1
if "%a%" neq "!m!" set str=!str! %%i
)
set var=%str%&set str=&set /a n-=1,m=0,c+=1
set _%c%=%var: =%&set .%c%=%kong%%var: =%
if %n% neq 0 echo %kong%%var: =% %var: =%&goto loop
set /a c-=2
for /l %%i in (%c%,-1,1) do echo !.%%i! !_%%i!
echo %code% %code%
pause>nul




批处理之家新域名:www.bathome.net
2008-7-10 13:25
查看资料  发送邮件  发短消息  网志  OICQ (841615149)  编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

^_^

@echo off&mode con: cols=50 lines=33&color 1f
::获取字符串的长度
set "str=abcdabcdabcdabcd"
setlocal enabledelayedexpansion
for /l %%a in (0 1 100) do if not "!str:~%%a,1!"=="" set /a m=%%a+1
endlocal&set /a m=%m%&echo.

::第一题、==============================================
setlocal enabledelayedexpansion
:loop1
set /a w=!random!%%m+1,h=w-1,m-=1
set str=!str:~0,%h%!!str:~%w%!
echo !str!
if !m! neq 1 goto loop1
ping/n 2 127.1>nul

::第二题、==============================================
cls&endlocal&echo.
setlocal enabledelayedexpansion&color 1a
:loop2
set /a w=!random!%%m+1,h=w-1,m-=1
set str=!str:~0,%h%!!str:~%w%!
echo %ko%!str!
set "ko= %ko%"
if !m! neq 1 goto loop2
ping/n 2 127.1>nul

::第三题、==============================================
cls&endlocal&echo.
setlocal enabledelayedexpansion&color 1e
:loop3
set /a n+=1,w=!random!%%m+1,h=w-1,m-=1
set num%n%=%ko%%str% %str%
set str=!str:~0,%h%!!str:~%w%!
set "ko= %ko%"
echo !num%n%!
if !m! neq 0 goto loop3
set /a n-=1
for /l %%a in (!n! -1 1) do echo !num%%a!
pause>nul


Last edited by 26933062 on 2008-7-10 at 04:41 PM ]



致精致简!
2008-7-10 13:26
查看资料  发短消息  网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下

Originally posted by zw19750516 at 2008-7-10 01:25 PM:
都不敢拿出手了,但是思路还是不同,代码也通用,还是发出来一起研究下了:

@echo off&setlocal enabledelayedexpansion
set str=abcdabcdabcdabcd
set code= ...

学习! 正是从前辈这里学到的知识。。




心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-7-10 13:28
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 14 楼』:   使用 LLM 解释/回答一下

下次出题应该规定某级别以上会员不准抢着贴答案,否则扣分,呵呵。



2008-7-10 18:45
查看资料  发短消息  网志   编辑帖子  回复  引用回复
26933062
银牌会员





积分 2268
发帖 879
注册 2006-12-19
状态 离线
『第 15 楼』:   使用 LLM 解释/回答一下

Originally posted by HAT at 2008-7-10 18:45:
下次出题应该规定某级别以上会员不准抢着贴答案,否则扣分,呵呵。

实在是冤! 我是看楼主都已经公布答案了,才帖代码的 。



致精致简!
2008-7-10 20:38
查看资料  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: