|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
16 楼』:
晕。。。
ps:兄弟的代码不通用啊,如果两边都是字母或汉字怎么办?
[ Last edited by zw19750516 on 2008-7-11 at 01:49 AM ]
|
批处理之家新域名:www.bathome.net |
|
2008-7-11 01:46 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
17 楼』:
Quote: | Originally posted by zw19750516 at 2008-7-11 01:46 AM:
晕。。。
ps:兄弟的代码不通用啊,如果两边都是字母或汉字怎么办?
[ Last edited by zw19750516 on 2008-7-11 at 01:49 AM ] |
|
还请多指教!~
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-11 01:52 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
|
2008-7-11 01:55 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
19 楼』:
Quote: | Originally posted by zw19750516 at 2008-7-11 01:46:
晕。。。
ps:兄弟的代码不通用啊,如果两边都是字母或汉字怎么办?
[ Last edited by zw19750516 on 2008-7-11 at 01:49 AM ] |
|
两边都是字母?
这只能怪你出题不谨慎了。。
|
致精致简! |
|
2008-7-11 01:57 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
20 楼』:
果真是我想太太太复杂了。。。这题做到一半我是想放弃的,FAITH。。。
现在再做的话,我怕我果真会放弃了,如此的一个题目,想的脊椎都疼了~
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-11 02:01 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
21 楼』:
Quote: | Originally posted by 26933062 at 2008-7-11 01:57:
两边都是字母?
这只能怪你出题不谨慎了。。 |
|
我只是说明代码要提高通用性啊,没别的意思,本题他是已经做出来了,这个我不否认的。
|
批处理之家新域名:www.bathome.net |
|
2008-7-11 02:02 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
22 楼』:
Quote: | Originally posted by pusofalse at 2008-7-11 02:01:
果真是我想太太太复杂了。。。这题做到一半我是想放弃的,FAITH。。。
现在再做的话,我怕我果真会放弃了,如此的一个题目,想的脊椎都疼了~ |
|
胜利往往是跟在你感觉再也挺不住的那一刻之后的。
ps:兄弟们,我先睡觉了,明天还要上班,期待有人写出高效通用的代码(我的就先不发了)。。。
[ Last edited by zw19750516 on 2008-7-11 at 02:08 AM ]
|
批处理之家新域名:www.bathome.net |
|
2008-7-11 02:04 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
23 楼』:
我想没这么长吧 报到
|
简单!简单!再简单! |
|
2008-7-11 02:46 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
24 楼』:
Quote: | Originally posted by terse at 2008-7-11 02:46:
我想没这么长吧 报到 |
|
但解题的代码肯定都不会短,我想应该不能在10行内解决问题。
|
批处理之家新域名:www.bathome.net |
|
2008-7-11 10:02 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
25 楼』:
看来此题确实有点难度,我先公布本人所想的比较复杂的一种方法吧:
@echo off&setlocal enabledelayedexpansion
set str=0123456789abcdefghij
:lp
set a=%str:~,1%&set /a n+=1
set .%n%=%a%&set _%n%=!str:~-1,1!&set str=%str:~1,-1%
if defined str goto lp
set /p code=please enter the code:
:loop
set a=%code:~,1%&set var=%var% !a!&set code=%code:~1%
if defined code goto loop
for /l %%a in (1,1,%n%) do (
for %%i in (%var%) do (
if "!.%%a!" equ "%%i" set flag=a
if "!_%%a!" equ "%%i" set flag=a
)
if defined flag (
set str1=!str1!!.%%a!&set str2=!_%%a!!str2!&set "flag="
) else (
set str1=!str1!#&set str2=#!str2!
))
cls&echo %str1% ^| %str2%&pause>nul
|
批处理之家新域名:www.bathome.net |
|
2008-7-11 11:49 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
26 楼』:
确实够绕人的。!花费了我不少时间。。。
前后共想出三种方法,第一种没通用性,后两种比较通用。
总的来说感觉思路没有zw19750516的清晰。。。 已经迷糊了。被绕晕了。。。
代码一、
左边的必须是数字。(不通用、仅针对顶楼的题目)
@echo off&setlocal enabledelayedexpansion
echo.&set /p num= 请输入 &cls
set "str=a b c d e f g h i j"
set "var1=##########"
set /a n=10
for %%a in (%str%) do (
set /a n-=1&set .%%a=!n!&set .!n!=!n!&set "_!n!=%%a"
)
for /l %%a in (0 1 9) do (
if not "!num:~%%a,1!"=="" set num2=!num2! !num:~%%a,1!
)
for %%a in (!num2!) do (
set /a n=!.%%a!+1
call set "var1=%%var1:~0,!.%%a!%%!.%%a!%%var1:~!n!%%"
)
for /l %%a in (0 1 9) do (
if "!var1:~%%a,1!"=="#" (set var2=#!var2!) else set "var2=!_%%a!!var2!"
)
echo.&echo !var1! !var2!
pause>nul 代码二、
通用点的,不局限于数字、左右两边可以是任意字符但不能有重复。
@echo off&setlocal enabledelayedexpansion
set "str1=abcdefghij"&set "str2=tsrqponmlk"
for /l %%a in (0 1 9) do (
set ".!str1:~%%a,1!=!str1:~%%a,1!"
set ".!str2:~%%a,1!=!str1:~%%a,1!"
set "_!str1:~%%a,1!=#"
set "_!str2:~%%a,1!=#"
)
echo !str1! klmnopqrst
echo.&set /p num= 请输入 &cls&echo !num!
echo.&echo !str1! klmnopqrst
set num=!num: =!
for /l %%a in (0 1 9)do if not "!num:~%%a,1!"=="" set num2=!num2! !num:~%%a,1!
for %%a in (!num2!) do set _%%a=!.%%a!&set "_!.%%a!=!.%%a!"
for /l %%a in (0 1 9) do call set "var1=!var1! %%_!str1:~%%a,1!%%"
set /a nnn=-1
for %%a in (!var1!) do (
set /a nnn+=1
if "%%a"=="#" (set var2=#!var2!) else call set "var2=%%str2:~!nnn!,1%%!var2!"
)
echo.&echo !var1: =! !var2!
pause>nul 代码三、
@echo off&setlocal enabledelayedexpansion
set "str1=abcdefghij"&set "str2=tsrqponmlk"
set var1=##########&set var2=!var1!
echo !str1! klmnopqrst
echo.&set /p num= 请输入 &cls&echo 你输入的是 !num!
echo.&echo !str1! klmnopqrst
set num=!num: =!
for /l %%a in (0 1 9)do if not "!num:~%%a,1!"=="" set num2=!num2! !num:~%%a,1!
for /l %%a in (0 1 9) do (
set /a mmm=%%a+1
set ".!str1:~%%a,1!=!mmm!"
set ".!str2:~%%a,1!=!mmm!"
)
for %%a in (!num2!) do (
set /a hhh=!.%%a!-1
call set var1=%%var1:~0,!hhh!%%%%str1:~!hhh!,1%%%%var1:~!.%%a!%%
call set var2=%%var2:~0,!hhh!%%%%str2:~!hhh!,1%%%%var2:~!.%%a!%%
)
for /l %%a in (0 1 9) do set var3=!var2:~%%a,1!!var3!
echo.&echo !var1! !var3!
pause>nul
|
致精致简! |
|
2008-7-11 12:11 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
27 楼』:
说老实话,我看你的化码看晕了。。。强人居然想出了三种方法。
思路突出这处在于巧妙运用了变量赋值。
缺陷我想还是在代码过于繁杂上。
[ Last edited by zw19750516 on 2008-7-11 at 01:02 PM ]
|
批处理之家新域名:www.bathome.net |
|
2008-7-11 12:15 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
28 楼』:
再给出本人有点取巧的代码(输入时必须按如1 a f 4这样的方式):
@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
|
批处理之家新域名:www.bathome.net |
|
2008-7-11 12:21 |
|
|
pusofalse
银牌会员
积分 1604
发帖 646
注册 2008-4-13
状态 离线
|
『第
29 楼』:
看了前辈们的代码,惭愧之至。。。
|
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^ |
|
2008-7-11 13:09 |
|
|
26933062
银牌会员
积分 2268
发帖 879
注册 2006-12-19
状态 离线
|
『第
30 楼』:
再来一个,思路清晰点的。
@echo off&setlocal enabledelayedexpansion
set "str1= 0 1 2 3 4 5 6 7 8 9"
set "str2= j i h g f e d c b a"
echo.&set /p num= 请输入 &cls&set num=!num: =!
for %%a in (!str1! !str2!) do set num=!num:%%a= %%a!
for %%a in (%str1%) do set /a wei+=1,weis=wei*2
for /l %%a in (1 2 !weis!) do (
set ".!str1:~%%a,1!=!str2:~%%a,1!"
set ".!str2:~%%a,1!=!str1:~%%a,1!"
)
for %%a in (!num!)do set _%%a=a&set _!.%%a!=a
for %%a in (!str1!)do if defined _%%a (set var1=!var1!%%a) else set "var1=!var1!#"
for %%a in (!str2!)do if defined _%%a (set var2=%%a!var2!) else set "var2=#!var2!"
echo.&echo !var1! !var2!
pause>nul [ Last edited by 26933062 on 2008-7-11 at 04:14 PM ]
|
致精致简! |
|
2008-7-11 15:18 |
|