- ベストアンサー
文字列の組合わせについて
仕事でこまっています。できるだけ早めに教えていただけると幸いです。 ABCDEFという文字列があるとします。この文字列の組合わせのパターン とそのパターンがいくつあるかしらべたいと思っています。 パターン化する際の条件としては ■重複する文字列のパターンは除く AABCDFとかABBDFDなどは除いてください ■文字数は1文字から6文字までです。 A、Bという組み合わせからABCDEFまでの中からの組合わせになります。 ■順番については、違っていても同一のものとする。 ABCでもBCAでも同じ組合わせということになります。 またこういう作業をする際にどうやって算出するのかも併せて教えて いただけると助かります。 以上よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
すみません、問題の傾向からプログラミング関係の人かと思って、 説明なしで2進数を使ってしまいました。 2進数というのは、えー、まず、ソロバンを思い浮かべてください。 普通のソロバンは、1つの桁で9を表せますね。(5の玉1個と、1の玉4個) 2進数というのは、1つの桁に玉が一個しかないソロバンのようなものです。 000001に1を加えると桁が繰り上がって、000010となります。 コンピューター内部ではこのようにして数を保存しています。 で、2進数を、ABCEDFに変換するとは、 101010 ↓ A*C*E* のように、1のところは有る、0の所は無い、というふうにするのです。 もっと例を挙げると 001110 ↓ **CDE* 110011 ↓ AB**EF のようにするわけです。
その他の回答 (4)
- liar_adan
- ベストアンサー率48% (730/1515)
>すみません、どんな組合わせがあるのか一覧表にしたいのです。 だから、 >2進数から作っていけば、全部の組み合わせを尽くすことができます。 さっきやったように、2進数で000001から111111まで 63個の数を作って、 その各桁をABCDEFに変換すれば、全部の組み合わせが出ます。 さっきのもうちょっと続けると 000101 = DF 000110 = DE 000111 = DEF ... 101010 = ACE 101011 = ACEF ... ここで 101010 = ACE になるのは、 101010 = A_C_E_ のように考えてください。要するに、0のところのB、C、Fが無いわけです。 もっとも63個だから手作業(#3さんの方法)でも あまり手間はかからないと思います。
- springside
- ベストアンサー率41% (177/422)
個数の計算は他の方の回答通りだと思います。 >>すみません、どんな組合わせがあるのか一覧表にしたいのです。 地道にやっていくしかないんじゃないですか。 (1文字目→2文字目→3文字目→・・・と、順番に書いていくということです) (1)1文字の場合 A,B,C,D,E,F (2)2文字の場合 AB,AC,AD,AE,AF(1文字目がAのもの) BC,BD,BE,BF(1文字目がBのもの) CD,CE,CF(1文字目がCのもの) (以下同様) (3)3文字の場合 ABC,ABD,ABE,ABF(1文字目がA、2文字目がB) ACD,ACE,ACF(1文字目がA、2文字目がC) ADE,ADF(1文字目がA、2文字目がD) AEF(1文字目がA、2文字目がE) BCD,BCE,BCF(1文字目がB、2文字目がC) BDE,BDF(1文字目がB、2文字目がD) BEF(1文字目がB、2文字目がE) (以下同様) (4)4文字の場合 ABCD,ABCE,ABCF(1文字目がA、2文字目がB、3文字目がC) ABDE,ABDF(1文字目がA、2文字目がB、3文字目がD) ABEF(1文字目がA、2文字目がB、3文字目がF) BCDE,BCDF CDEF (5)文字の場合 ABCDE BCDEF (6)文字の場合 ABCDEF
- liar_adan
- ベストアンサー率48% (730/1515)
2^6 = 64通りです。(2の6乗) ""(何もない)を組み合わせと見なさなければ、 63通りです。 各文字列が、「ある」を1、「ない」を0で表します。すると、 000001 = F 000010 = E 000011 = EF 000100 = D ... 111111 = ABCDEF のように、6ケタの2進数と同じことになります。 また、2進数から作っていけば、全部の組み合わせを尽くすことができます。
補足
すみません、どんな組合わせがあるのか一覧表にしたいのです。
- c80s3xxx
- ベストアンサー率49% (1634/3294)
6C1+6C2+6C3+6C4+6C5+6C6
補足
2進数というのがよくわかりません。また変換とありますが現実的にはどうすればいいのでしょうか?