-----------------------------------
有如下对应关系:
0123456789 | abcdefghij
要求写出人机交互批处理,
-----------------------------------
当输入7时,输出如下:
#######7## | ##c#######
当输入a5时,输出如下:
#####5###9 | a###e#####
当输入12j时,输出如下:
012####### | #######hij
-----------------------------------
1 本人会视解题思路和技巧予以加分(重在思路)。
2 如不想处理特殊字符,可以略去中间的|不输出。
3 请在解答时注意代码的通用性,并请尽量保持代码简洁(考虑问题复杂化,解决
问题简单化)。
4 在人机交互界面时进行输入时可尽量为解题提供便利。
5 不需写出对输入字符进行判断的代码部分。
-----------------------------------
-----------------------------------
pusofalse兄弟在15楼已第一个解答出此题,但其代码明显过于复杂且不通用,因
此仅加上1分。
本人也在25楼给出了一个解决方案(代码还是复杂点了)。
已有多种解决方案(10楼、25楼、26楼、28楼、29楼、35楼、37楼、38楼...),
个人还是倾向于在28楼给出的方案(最佳方案还要大家来评定),代码如下:
@echo off&setlocal enabledelayedexpansion
set str=0j 1i 2h 3g 4f 5e 6d 7c 8b 9a
set /p code=请输入字符,中间请用空格格开:
for %%a in (%str%) do (set a=%%a
for %%i in (%code%) do (
if "%%i" equ "!a:~,1!" set flag=a
if "%%i" equ "!a:~1!" set flag=a
)
if defined flag (
set str1=!str1!!a:~,1!&set str2=!a:~1!!str2!&set "flag="
) else (
set str1=!str1!#&set str2=#!str2!
))
cls&echo %str1% ^| %str2%&pause>nul
本人认为此代码集合了思路清晰、通用、简洁、高效等特点。
特此推介terse兄的代码如下:
@echo off&setlocal enabledelayedexpansion
set/p p=请输入:
set str=27j834fi56a901bghcde
set st=!str!&set pt=!p!
:lp
set ..!p:~%n%,1!=ok&set/a n+=1
set .!str:~,1!=!str:~-1,1!
set str=!str:~1,-1!
if defined str goto lp
:lp1
if defined ..%st:~,1% (set var1=!var1!%st:~,1%&set var2=!.%st:~,1%!!var2!)else (
if defined ..!.%st:~,1%! (set var1=!var1!%st:~,1%&set var2=!.%st:~,1%!!var2!)else set var1=!var1!#&set var2=#!var2!)
set st=!st:~1,-1!&set pt=!pt:~1!
if defined st goto lp1
echo !var1! ^| !var2!
pause
-----------------------------------
在此谢谢大家对本贴的踊跃回复,但唯一感到不足的就是基本都是高级会员
(quya老土其实也是位元老级的会员),而少见新人的踪迹,希望新人都有勇于挑
战的精神,我不断出题的原意也在于此了。
-----------------------------------
[ Last edited by zw19750516 on 2008-7-13 at 09:44 AM ]
批处理之家新域名:www.bathome.net

