プロが教えるわが家の防犯対策術!

異なるアルファベット(又は数字)6文字の組み合わせの全パターンを調べたいのですが便利なソフト、サイトはないでしょうか?
パターン数を調べたいのではなく全部の組み合わせが見てみたいのです。よろしくお願いします。

A 回答 (5件)

 #1です。


 お礼をありがとうございます。
 プログラムも良いですが、手作業をいとわなければエクセルでも出力できます。
 考え方は0~46655(=6^6-1)までの数を6進数で表記して、同じ数字がないものだけを抽出するというものです。(全部で720個あります。)
 あとは、数字の場合は各桁を1増やし、英字の場合はASCIIコードなどを利用して文字変換すれば得られます。

 上記の考えで、1~6の場合で出力したものを以下に記しますので、参考にしてください。

123456156234245136324156412356456123534126623145
123465156243245163324165412365456132534162623154
123546156324245316324516412536456213534216623415
123564156342245361324561412563456231534261623451
123645156423245613324615412635456312534612623514
123654156432245631324651412653456321534621623541
124356162345246135325146413256461235536124624135
124365162354246153325164413265461253536142624153
124536162435246315325416413526461325536214624315
124563162453246351325461413562461352536241624351
124635162534246513325614413625461523536412624513
124653162543246531325641413652461532536421624531
125346163245251346326145415236462135541236625134
125364163254251364326154415263462153541263625143
125436163425251436326415415326462315541326625314
125463163452251463326451415362462351541362625341
125634163524251634326514415623462513541623625413
125643163542251643326541415632462531541632625431
126345164235253146341256416235463125542136631245
126354164253253164341265416253463152542163631254
126435164325253416341526416325463215542316631425
126453164352253461341562416352463251542361631452
126534164523253614341625416523463512542613631524
126543164532253641341652416532463521542631631542
132456165234254136342156421356465123543126632145
132465165243254163342165421365465132543162632154
132546165324254316342516421536465213543216632415
132564165342254361342561421563465231543261632451
132645165423254613342615421635465312543612632514
132654165432254631342651421653465321543621632541
134256213456256134345126423156512346546123634125
134265213465256143345162423165512364546132634152
134526213546256314345216423516512436546213634215
134562213564256341345261423561512463546231634251
134625213645256413345612423615512634546312634512
134652213654256431345621423651512643546321634521
135246214356261345346125425136513246561234635124
135264214365261354346152425163513264561243635142
135426214536261435346215425316513426561324635214
135462214563261453346251425361513462561342635241
135624214635261534346512425613513624561423635412
135642214653261543346521425631513642561432635421
136245215346263145351246426135514236562134641235
136254215364263154351264426153514263562143641253
136425215436263415351426426315514326562314641325
136452215463263451351462426351514362562341641352
136524215634263514351624426513514623562413641523
136542215643263541351642426531514632562431641532
142356216345264135352146431256516234563124642135
142365216354264153352164431265516243563142642153
142536216435264315352416431526516324563214642315
142563216453264351352461431562516342563241642351
142635216534264513352614431625516423563412642513
142653216543264531352641431652516432563421642531
143256231456265134354126432156521346564123643125
143265231465265143354162432165521364564132643152
143526231546265314354216432516521436564213643215
143562231564265341354261432561521463564231643251
143625231645265413354612432615521634564312643512
143652231654265431354621432651521643564321643521
145236234156312456356124435126523146612345645123
145263234165312465356142435162523164612354645132
145326234516312546356214435216523416612435645213
145362234561312564356241435261523461612453645231
145623234615312645356412435612523614612534645312
145632234651312654356421435621523641612543645321
146235235146314256361245436125524136613245651234
146253235164314265361254436152524163613254651243
146325235416314526361425436215524316613425651324
146352235461314562361452436251524361613452651342
146523235614314625361524436512524613613524651423
146532235641314652361542436521524631613542651432
152346236145315246362145451236526134614235652134
152364236154315264362154451263526143614253652143
152436236415315426362415451326526314614325652314
152463236451315462362451451362526341614352652341
152634236514315624362514451623526413614523652413
152643236541315642362541451632526431614532652431
153246241356316245364125452136531246615234653124
153264241365316254364152452163531264615243653142
153426241536316425364215452316531426615324653214
153462241563316452364251452361531462615342653241
153624241635316524364512452613531624615423653412
153642241653316542364521452631531642615432653421
154236243156321456365124453126532146621345654123
154263243165321465365142453162532164621354654132
154326243516321546365214453216532416621435654213
154362243561321564365241453261532461621453654231
154623243615321645365412453612532614621534654312
154632243651321654365421453621532641621543654321
    • good
    • 1
この回答へのお礼

お礼が送れてすみません。
仕事の急な都合で海外に転勤になっていました。
見たかったものをすべてをわざわざ書き込んで頂きありがとうございます。

お礼日時:2009/06/11 17:13

昼休みにVisual Basicで書いてみました。

配列aのa(0)~a(5)に入れたもの(このmainProgramでは最初にあるForループで0~5の数値を入れてますが、その代わりにa(0)="A":a(1)="B":...のように文字を入れても構いません)の順列を作ります。配列aを出力するoutputというSubはご自分で。

Dim a(5)
Sub mainProgram()
For i = 0 To 5
a(i) = i
Next i
permutation 6
End Sub

Sub permutation(n)
If n = 1 Then
output
Else
For j = n - 1 To 0 Step -1
swap j, n - 1
permutation n - 1
swap j, n - 1
Next j
End If
End Sub

Sub swap(n, m)
s = a(n)
a(n) = a(m)
a(m) = s
End Sub

Sub output()
....
End Sub
    • good
    • 0

ものすごく泥臭い力技になるので、もっとスマートな方法もあるかもしれませんが、このケースだと、WinXP、Excel2003で数秒で終わるので、とりあえず。


数字(1~6)で。

変数を123456から654321までインクリメントループ。

ループの中で、1回ごとに、
・変数に1~6以外の数字が使われていないか
・変数に1~6が1回ずつ使われているか
をチェックして、
条件に合わなかったら、何もしない。
条件に合ったら、その数字を書き出す

ということをすれば良いです。

私はとりあえず、こんなマクロを組んでみました。

Sub test()
Dim a As Long
Dim b As Long
Dim c As Long
Dim x As Long
Dim i As Long
Dim r As Long
r = 1
For a = 123456 To 654321
b = a
x = 0
For i = 1 To 6
c = b Mod 10
b = Int(b / 10)
Select Case c
Case 1
x = x + 1
Case 2
x = x + 10
Case 3
x = x + 100
Case 4
x = x + 1000
Case 5
x = x + 10000
Case 6
x = x + 100000
Case Else
x = 0
Exit For
End Select
Next i
If x = 111111 Then
Cells(r, 1).Value = a
r = r + 1
End If
Next a
End Sub
    • good
    • 0

「全パターン」とはどういう意味でしょうか?


・6文字すべてを 1回ずつ使う
・各文字を高々 1回ずつ使う
・それぞれの文字を何回使ってもいいからとにかく並べてみる
など, いくつかの意味にとれます.
    • good
    • 0

 本当に見たいのですか?


 英字26字に組み合わせだけでも1億通りを越えますよ。
 現実的には、目を通すこともできないと思うのですが。

 プログラムを組めばパターンを生成することもできますが、PCに長時間計算させることになると思いますよ。

 ちなみに、テキスト・データで勘定しても、データ・サイズは1GB程度になりますよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
こちらの言葉足らずで誤解を生むような説明で申し訳なかったですが、6種類より上は調べるつもりではありません。つまり数字だけで言えば1から6まで、アルファベットで言えばAからFまでしか調べるつもりはありません。
もしよろしければそのプログラムの組み方を教えて頂けるととても助かります。

お礼日時:2009/05/21 08:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!