私はこの問題を抱えています。すべての単語をすべての組み合わせで大文字に変更できる何らかのプログラムを作成したいと考えています。 .. 何か) アイデアはありますか?
user2460469
質問する
862 次
2 に答える
3
編集:最初のソリューションでは、スペースなどのアルファベット以外の文字が原因で繰り返される順列が正しく管理されていないことに気付きました。この詳細を修正するために、以下のバッチ ファイルを変更しました。
@echo off
setlocal EnableDelayedExpansion
set /P "input=Enter input: "
rem Convert "input" into "upcase" and "lowcase", and create "letters" string
set upcase=%input%
set lowcase=%input%
set letters=
for %%a in ("a=A" "b=B" "c=C" "d=D" "e=E" "f=F" "g=G" "h=H" "i=I" "j=J" "k=K" "l=L" "m=M"
"n=N" "o=O" "p=P" "q=Q" "r=R" "s=S" "t=T" "u=U" "v=V" "w=W" "x=X" "y=Y" "z=Z") do (
set upcase=!upcase:%%~a!
for /F "tokens=1,2 delims==" %%b in (%%a) do (
set lowcase=!lowcase:%%c=%%b!
set letters=!letters!%%c
)
)
rem Separate individual characters in "char" two dimensional array, and create "bit" array
rem Non-alphabetic characters are marked with "bit" elements = 2
set n=-1
:nextChar
set /A n+=1
set char=%lowcase:~0,1%
if "!letters:%char%=!" neq "%letters%" (
set bit[%n%]=0
set char[%n%,0]=%char%
set char[%n%,1]=%upcase:~0,1%
) else (
set bit[%n%]=2
set char[%n%,2]=%char%
)
set upcase=%upcase:~1%
set lowcase=%lowcase:~1%
if defined lowcase goto nextChar
rem Generate all permutations
:nextValue
rem Copy characters from "char" array into "output" string with current "bit" values
set output=
for /L %%i in (0,1,%n%) do (
for %%b in (!bit[%%i]!) do (
set output=!output!!char[%%i,%%b]!
)
)
rem Show this permutation
echo %output%
rem Advance "bit" array to next value
set /A b=n+1, carry=1
:nextBit
set /A b-=1
if !bit[%b%]! lss 2 (
if !bit[%b%]! equ 0 (
set /A bit[%b%]=1, carry=0
) else (
set /A bit[%b%]=0, carry=1
)
)
if %b% gtr 0 if %carry% equ 1 goto nextBit
if %carry% equ 0 goto nextValue
于 2013-06-06T22:30:06.723 に答える