返回列表 发帖

批处理编程挑战题“物以类聚”-将字母按大小写归并

[问题]
给你一个字符串,只由大小写字母构成。比如字符串:aAbBD,请将所有小写字母移到左端,大写移到右端,形成这种格式:abABD。也就是原字符串中小写a在小写b前面,移动后小写a仍然在小写b的前面,原字符串中大写A在大写B前面,移动后大写A仍然在大写B前面。

要求:不限编程语言(但最好是用批处理去完成才有挑战性),只要能实现这种移动效果就行。你可以拿字符串 bBAathToHOMmEe 做测试,移动后应该输出为 bathomeBATHOME。

[示例]
CMD脚本
@echo off
set str=bBAathToHOMmEe
for %%A in (#A,#B,#C,#D,#E,#F,#G,#H,#I,#J,#K,#L,#M,#N,#O,#P,#Q,#R,#S,#T,#U,#V,#W,#X,#Y,#Z) do (
set %%A=%%A
)
setlocal enabledelayedexpansion
:cut
set letter=!str:~0,1!
for %%a in (!letter!) do (
if "#%%a"=="!#%%a!" (
set uprstr=!uprstr!%%a
) else (
set lowstr=!lowstr!%%a
)
)
set str=!str:~1!
if "!str!"=="" (set/p=%lowstr%%uprstr%&exit)
goto :cutCOPY

回复 2# 523066680
能来个批处理版吗,我想看看你怎么处理大小写。

TOP

回复 6# 老刘1号
用纯批试试

TOP

回复 3# pcl_test
拼的好精致

TOP

回复 9# 523066680
批处理的坑太多。

TOP

回复 19# 523066680
顾森,北京大学中国语言文学系应用语言专业07级本科生,Matrix67博客作者。Matrix67名字来源:“有一次申请邮箱,matrix这个id被人占用了,于是我就开始往后面加数字。”试过123,试过456,直到67才最终定下来。这就是Matrix67的来历,它也成为了顾森在网络这个虚拟世界上的大名。 2006年以文科生身份参加全国信息学奥林匹克竞赛获夏令营银牌,并保送至中文系应用语言专业。现任启明星学校初中奥数教师、果壳网“死理性派”栏目编辑。   大三由于忙于一些事物,休学一年。   个人主页:http://www.matrix67.com/blog/   果壳网主页http://www.guokr.com/i/0376718656/

TOP

本帖最后由 happy886rr 于 2017-4-15 00:14 编辑

回复 19# 523066680
酷语言分形
1.地毯(图片均为外链)

2.树

3.圆

.
.
请使用CLGO解释器3.0版运行。下载地址:http://www.bathome.net/thread-43178-1-1.html
::*****************************************************************************
  @ECHO OFF&MODE CON COLS=100 LINES=30&CLGO "%~F0"&PAUSE>NUL&EXIT /B
::*****************************************************************************
/*
  谢尔宾斯基地毯,酷码;
*/
//入口函数
TO MAIN
FOR :A 1 6
CS
WAIT 10
MAKE :PENX=-330 :PENY=220
TEXT 22 3 8 微软雅黑 Sierpinski-Level:{:A}
MAKE :PENX=-200 :PENY=-200 :PENC=6 :PENW=10 :PENS=0
XEBD 380 :A
WAIT 500
]
//谢尔宾斯基主循环
TO XEBD :L :N
REPEAT 4
FD :L
RT 90
]
XK :L
XEB :L/3 :N-1
//地毯分循环
TO XEB :L :N
IF :N=0
STOP
]
XK :L
XEB :L/3 :N-1
REPEAT 2
PU
FD :L
PD
XK :L
XEB :L/3 :N-1
]
REPEAT 2
PU
RT 90
FD :L
LT 90
PD
XK :L
XEB :L/3 :N-1
]
REPEAT 2
PU
BK :L
PD
XK :L
XEB :L/3 :N-1
]
PU
LT 90
FD :L
RT 90
PD
XK :L
XEB :L/3 :N-1
PU
LT 90
FD :L
RT 90
PD
//细节补枝
TO XK :L
PU
FD :L/3
RT 90
FD :L/3
LT 90
PD
REPEAT 4
FD :L/3
RT 90
]
MAKE :PENC=RAND(15)+1
PU
BK :L/3
LT 90
FD :L/3
RT 90
PDCOPY
::*****************************************************************************
  @ECHO OFF&MODE CON COLS=100 LINES=30&CLGO "%~F0"&PAUSE>NUL&EXIT /B
::*****************************************************************************
//入口函数
TO MAIN
FOR :A 2 12
CS
WAIT 10
MAKE :PENX=-330 :PENY=220
TEXT 22 3 8 微软雅黑 Sierpinski-Level:{:A}
MAKE :PENX=0 :PENY=-200 :PENC=6 :PENW=2 :PENS=2
TREE 100 :A 20 0.75
WAIT 50
]
TO TREE :L :N :ANGEL :RATE
IF :N=0
STOP
]
FD :L
RT :ANGEL
TREE :L*:RATE :N-1 :ANGEL :RATE
LT :ANGEL*2
TREE :L*:RATE :N-1 :ANGEL :RATE
RT :ANGEL
BK :L
MAKE :PENC=RAND(15)+1COPY
2

评分人数

TOP

回复 21# codegay
哦,我都不知道,不过他文章写得好。

TOP

本帖最后由 happy886rr 于 2017-4-14 23:49 编辑

回复 22# 老刘
你这账号太嫩了,还是一号好点。对了,酷语言也能彩色地毯。

TOP

回复 27# 老刘1号
只要代码巧妙,理论上没有画不出的图来,你就当他是控制台上的ppt吧。ICMD, Capis也能干这些,不过没酷语言绘图速度快。

TOP

本帖最后由 happy886rr 于 2018-9-3 21:29 编辑

回复 34# 老刘1号
技术有长进,我都改行了,不再写任何代码。

TOP

返回列表