中国DOS联盟论坛

中国DOS联盟

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

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

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

永远的学习者


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

已知字符串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 楼』:  

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



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

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 3 楼』:  

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

[ 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 楼』:  

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 楼』:  

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 楼』:  

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 楼』:  

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

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

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 楼』:  

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



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




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 9 楼』:  

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



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

永远的学习者


积分 3105
发帖 1276
注册 2008-3-8
状态 离线
『第 10 楼』:  



  Quote:
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 楼』:  

都不敢拿出手了,但是思路还是不同,代码也通用,还是发出来一起研究下了:
@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 楼』:  

^_^
@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 楼』:  



  Quote:
Originally posted by zw19750516 at 2008-7-10 01:25 PM:
都不敢拿出手了,但是思路还是不同,代码也通用,还是发出来一起研究下了:
[code]
@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 楼』:  

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



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





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



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

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



致精致简!
2008-7-10 20:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: