2007/12/04(Tue) 01:37:31 編集(投稿者)
■No10996 (ハツ さん) に返信
> ■No10992 (επιστημη さん) に返信
>>N文字あるとき、1〜2^N-1 の数を二進表現にすりゃいいんじゃね?
>>
> すみません、上のは例えばの話です。
> 数字 「1 2 3 4 5」だろうが、文字「あいうえお ああああ ううう」だろうがなんだろうがです。
> 組み合わせの所のみ見ていただきたいです。お願いします
って、επιστημηサマの例もご自身の例えに置き換えればいいだけだと思いマスよ・・・。
例の「あ」が「あいうえお」だろうがなんだろうが、じゃないデスか。
例なので、敢えてVB.NETでεπιστημηサマの例をコード化してみました。
#ちょうど立ち上げてたのがVBだったのもありマスが。
'// TextBox1に「あいうえお ああああ ううう」だろうがなんだろうがスペース区切りで入れてマス。
Dim str() As String = Me.TextBox1.Text.Split(" ".ToCharArray) '// 配列化
Dim len As Long = str.Length '// パターンの個数デス。
Dim max As Long = 2 ^ len - 1 '// 2のべき乗(len)−1でパターン数を出しマス。
Dim arr(max - 1) As String '// パターンを入れる配列デス。
'// パターン数だけループしマス。
For i As Long = 1 To max
'// 2進表現にすりゃいいんじゃね部分のためのビット判定デス。
For j As Long = len - 1 To 0 Step -1
'// ビットが立っていればその対応する文字を加えマス。
arr(i - 1) = IIf((i And 1 << j), str(j), "").ToString & arr(i - 1)
Next j
Next i
# おっしゃってる内容を、επιστημηサマのロジックに置き換えて、ぱっと書いたらこんな感じ・・(汗)
# 私はアルゴリズムの質問だと思って見てたのデスが、なんか違うコトだったのかしら。。
【追記】コードにコメントいれマス。このビット判定も数に限界ありマスね。