• ベストアンサー

文字列の組合わせについて

仕事でこまっています。できるだけ早めに教えていただけると幸いです。 ABCDEFという文字列があるとします。この文字列の組合わせのパターン とそのパターンがいくつあるかしらべたいと思っています。 パターン化する際の条件としては ■重複する文字列のパターンは除く AABCDFとかABBDFDなどは除いてください ■文字数は1文字から6文字までです。 A、Bという組み合わせからABCDEFまでの中からの組合わせになります。 ■順番については、違っていても同一のものとする。 ABCでもBCAでも同じ組合わせということになります。 またこういう作業をする際にどうやって算出するのかも併せて教えて いただけると助かります。 以上よろしくお願いいたします。

noname#59413
noname#59413

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.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)
回答No.4

>すみません、どんな組合わせがあるのか一覧表にしたいのです。 だから、 >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さんの方法)でも あまり手間はかからないと思います。

noname#59413
質問者

補足

2進数というのがよくわかりません。また変換とありますが現実的にはどうすればいいのでしょうか?

回答No.3

個数の計算は他の方の回答通りだと思います。 >>すみません、どんな組合わせがあるのか一覧表にしたいのです。 地道にやっていくしかないんじゃないですか。 (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)
回答No.2

2^6 = 64通りです。(2の6乗) ""(何もない)を組み合わせと見なさなければ、 63通りです。 各文字列が、「ある」を1、「ない」を0で表します。すると、 000001 = F 000010 = E 000011 = EF 000100 = D ... 111111 = ABCDEF のように、6ケタの2進数と同じことになります。 また、2進数から作っていけば、全部の組み合わせを尽くすことができます。

noname#59413
質問者

補足

すみません、どんな組合わせがあるのか一覧表にしたいのです。

  • c80s3xxx
  • ベストアンサー率49% (1631/3289)
回答No.1

6C1+6C2+6C3+6C4+6C5+6C6

関連するQ&A

  • javascriptで文字列の差分を取得

    var str1 = "abc"; var str2 = "abdec"; var str3 = "abcdef"; var str4 = "defgabc"; 元々の文字列文字数固定ではない(例として)「abc」がありまして、 その最初か最後か途中の文字列の間に何かしらの文字列が入る可能性があります。 そのように追加された文字列を割り出したいのですが、 どのようにしたら良いでしょうか?アイディアお持ちでしたらよろしくお願いします。

  • 文字列の組み合わせ数を調べる方法

    図のような表の中から、文字列の組み合わせ数を調べる方法をご教示ください。 順序を問う組み合わせと順不同な組み合わせの2通りの数を調べたいです。 またこの場合はD列に結合した文字列を入れたほうが処理が簡単になるでしょうか(例:D1「CAB」)。 なおデータ数(行)は増える可能性がありますが、一行の文字数(列)は増えません。 図の場合だと、「PHW」の順序を問う組み合わせ数は「3」、順不同な組み合わせは「4」です。

  • 条件付組合せ - ある文字列は何番目に出るか?

    [ABC]の3文字を組み合わせて出来る文字列を順番に並べると、 1. A 2. B 3. AA 4. AB 5. BA 6. BB 7. AAA ... という風になります。 このとき、「Aの次にはBのみが出る」、「Bの次にはAのみが出る」という規則を適用すると、この順番は 1. A 2. B 3. AB 4. BA ... という風になります。 このような規則を適用したとき、「ある文字列が何番目に現れるか」を求めるには、どのように考えればよいのでしょうか? たとえば上記の例でいくと、「ABAB」という文字列が現れるのは一体何番目になるかという問題を、計算で求めるにはどのようにすれば良いのでしょうか。 つまり、 任意の文字を組み合わせて出来る文字列を順番に並べたパターンに対して、「ある文字の次には特定の文字しか出ない」というような規則をいくつか適用したとき、ある文字列が何番目に該当するかを求めるにはどうすれば良いか、 という問題です。 曖昧な部分がありましたら申し訳ありません。 補足させて頂きます。 ご回答よろしくお願い致します。

  • 文字列の組み合わせをエクセルで書き出したい。

    エクセル初心者です。 文字列の組み合わせのパターンを全部書き出したいのですが、エクセルでそのようなことは可能でしょうか? A,B,C,D,E,F,Gの7文字から4文字を抽出し、文字列を作りたいです。 ex)ABCD、GEDCなど。 4文字は必ず異なるアルファベットです ex)AABF、ADCDなどはダメ。 順序が異なれば同じ組み合わせでもかまいません。 ex)ABCD、DCBA ←大丈夫。 また、もしエクセルでできなかったら手書きで書き出そうと思うのですが、簡単な方法をご存知でしたらそちらもお願いいたします。

  • Excel 列の中のユニークな文字列の個数を数える

    こんにちは。 Excel 2007を使っています。 A列に文字列(ABC12345のような)が入っています。 大抵は4個ほど重複しています。 ですので重複する文字列を1個と数えて ユニークな文字列が全部で何個有るか数えたいのですが どんな関数を組んだらよいかわかりません。 ご存じの方お教えください

  • EXCELで文字列の特定の文字の位置を知る方法

    EXCELで文字列の特定の文字の位置を知る方法 EXCELでセル中の文字列、例えば、"abc 4/3 5/5 6/4" の最後の"/"の位置を知る方法を関数の組み合わせで出来ますか? 教えてください。"/"の数は任意で最後の"/"の位置を知りたいのですが??? どうかよろしくお願いします。VBAでなく関数の組み合わせでお願いします。

  • Excelで文字列の抽出をしたいので教えてください

    Excelで下記の文字列を抽出したいのですがどなたか教えてください 例) - abcdef xxxx ---- この場合任意の文字桁も不明で最初のブランクの後のabcdefを抽出 -- abc -- def zzz この場合任意の文字,桁も不明で2回目の'--'後のdefを抽出したいのですが宜しくお願いします

  • VB.NET 文字列において特定の文字を半角に変更

    こんにちは。 Framework2.0で開発しています。 文字列 = "ABCDEF" 特定文字 ="CD" または "A" を定義した場合、正規表現を用いて文字列"ABCDEF"の中の特定文字"CD" または "A" を半角に変更するには、どのような正規表現のパターンを記述すればよいのでしょうか? ご存知の方がいらっしゃいましたらお教え願います。

  • ある法則に従った文字列を抜き出す方法

    以前、ある法則に従った文字列を抜き出す処理をゴリゴリ頑張って作ったのですが、 正規表現で1発で対象文字列を抜き出す事は出来ないのか?と思いました。 しかし、正規表現をそのパターンの時どう記述すると実現出来るのか分からず断念しました。 例えば 1.あいうえお((abc:えー|びー))かきくけこ 2.あいうえお((abc:えー))かきくけこ 3.あいうえお((abc:えー|びー|しー))かきくけこ 4.あいうえお((abc:えー|びー|しー))かきくけこ((abc:でぃー)) こんなのがあった時、パターンとして「((abc:」から「))」の間の文字列を 取得したいです。 1.の時は「えー|びー」、2.の時は「えー」、3.の時は「えー|びー|しー」、 4.の時は「えー|びー|しー」と「でぃー」を、その正規表現にマッチする文字列だとしたいのです。 「((abc:」、「))」の間の文字列長は可変です。 どなたか上記を実現する正規表現をご教示下さい。 正規表現でマッチさせるからには「((abc:」、「))」という文字列もマッチした文字列として 取得するでしょうが、それは後処理で削る事になるので何の問題もありません。

    • ベストアンサー
    • PHP
  • 文字列のパターン

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