検索したらこんなのが出てきたが、同じ文字が重複するやつだったので、重複しないやつに改変してみた。
すごい時間かかった。やっぱり自分に職業プログラマーの素養はないわぁ‥‥。
サンプルをそのまま実行するとスクリプトの置き場所と同じところに結果.txtが作られ、内容は
abcd
abdc
acbd
...
みたいになります。
用途に応じてmyFRとmyWDをいじってね!
myFR = 4 '生成ケタ数 myWD = "a,b,c,d" mySR = Split(myWD, ",") myAR = "" mySS = "" Call ReP("") myTXT = Replace(Wscript.ScriptFullName, _ Wscript.ScriptName, "") & "結果.txt" Call Wtxt(mySS) Msgbox "END" CreateObject("WScript.Shell").Run """" & myTXT & """" '-------------------------------------------- '組み合わせ生成再帰処理 Function ReP(myAR) NoCandidate = True For i = 0 To myFR - 1 If mySR(i) <> "" Then NoCandidate = False Temporary = mySR(i) mySR(i) = "" Call ReP(myAR & Temporary) mySR(i) = Temporary End If Next If NoCandidate Then mySS = mySS & vbCrLf & myAR End If End Function '-------------------------------------------- '結果出力 Function Wtxt(mySS) With CreateObject("Scripting.FileSystemObject") _ .OpenTextFile(myTXT, 2, True) .Write mySS .Close End With End Function '--------------------------------------------