組合せ文字列をルールに従って並べる方法とは?

このQ&Aのポイント
  • A、B、C、D、Eの組合せ文字列をルールに従って並べることは可能なのか?
  • 組合せ文字列の並べ方には2つのルールがあります。
  • 同じ文字が9個以上続かないようにしながら、カードを並べて行きます。
回答を見る
  • ベストアンサー

この組合せ文字列をルールに従って並べることは可能でしょうか

A、B、C、D、Eという5つのアルファベットの重複を許さない組合せは35通りあります。 (A、B、C、D、E、AB、AC、AD、AE~ABCDE) これを1組づつ書いた35枚のカードがあるとします。 そしてまず初めにそのカードの中から「A」とだけ書かれたカードを置き、その下に続けて以下の2つのルールにしたがってカードを並べて行きます。 ルール1 下に並べるカードはすぐ上にあるカードに書かれてある文字から1つ減らした物か、1つ増やした物しか置けない。 ルール2 並べて行きとき、同じ文字が9個以上続いてはならない。 例 A AB ABC A C : : この例ではAが4個続いていると見ます。 ここように続けて並べて行き、残りの34枚すべてを並べることは可能でしょうか。 もし可能でしたらその並べ方を教えてください。 お願いいたします。

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

  • ベストアンサー
  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.1

35通り? 31通りじゃないですか? それはさておき。 ルール2について、同じ文字(例えばA)を含むカードはたった12枚しかない。となると、10枚以上連続してAを含むカードが並ぶようにする方が難しいんじゃなかろうか。というわけで、まずはルール1に注目します。 31枚のカードを机の上に適当にばらまいて、互いに「上下に置ける」もの同士の間を線で結ぶと、カードをノードとするひとつの無向グラフができます。ルール1だけを考えると、「このグラフ上でAから出発して、全てのカードを通る経路を求む」という問題です。 まずは実際にグラフを描いてみてはいかがでしょう。こんな風にすると見やすいでしょう: カードを4つのグループに分けます。 グループ1: 1文字のカード全部と、AB, BC, CD, DE, AE。 グループ2: 2文字のカードの残り5枚と、ABD, BCE, ACD, BDE, ACE。 グループ3: 3文字のカードの残り5枚と、4文字のカード全部。 グループ4: ABCDE  次に三重の同心円を考えて、それぞれの円にグループをひとつずつ割当て、同心円の中心にグループ4を置きます。もうちょっと詳しく言うと、 (1)大きな円の円周上にグループ1を並べます。まずA~Eを等間隔で並べ、AとBの中間にABを置く。BとCの中間にBC、以下同様。互いに「上下に置ける」もの同士の間を線で結べば10角形になります。 (2)一回り小さい円の円周上にグループ2を並べます。Aの近くにBEを置く。Bの近くにAC。以下BD、CE、ADを置く。またABの近くにABD、BCの近くにBCE、以下ACD、BDE、ACEを置いて行きます。互いに「上下に置ける」もの同士の間を線で結びます。自己交差のある10辺形が現れるでしょう。一番大きい円とはAB-ABD、BC-BCE、のように5箇所だけで繋がることになります。 (3)一番小さい円の円周上にグループ3を並べます。BEの近くにABEを置く。ACの近くにABC、以下BCD、CDE、ADE。ABEとABCの中間にABCE、以下ABCD、BCDE、ACDE、ABDE。互いに「上下に置ける」もの同士の間を線で結ぶと、10角形が現れます。 (4)真ん中にABCDを置く。互いに「上下に置ける」もの同士の間を線で結びます。 こう並べると、対称性がはっきり見えるでしょう。  経路のひとつの例として、グループを順番に網羅して行くのはどうでしょうか。最初にグループ1を全部網羅する。Aから出発して一番大きい円を一周するだけです。次にグループ2を網羅する。これには二番目の円を2つ飛ばしで3周します。それからグループ3を網羅する。三番目の円を一周するだけです。で、最後がABCDE。 さて、ルール2を満たすような経路が存在するかどうか、というのがご質問ですが、上記の例はどうでしょうかね。

kyouko_AYA
質問者

お礼

本当に間違いだらけの質問にとても丁寧な解答をしていただいてありがとうございました。 どう考えてこの問題を解けば良いのかすら分からなかった物ですから、 考え方を教えていただいたことは非常に参考になりました。 ありがとうございました。

kyouko_AYA
質問者

補足

さっそくありがとうございます。 >35通り? 31通りじゃないですか? ご指摘の通りです。31通りです。すみませんでした。m( _ _ )m 他にも誤字だらけで何を考えてたんでしょう。 お恥ずかしい限りです。

関連するQ&A

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

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

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

  • 文字列の反転

    こんばんわ。C言語初学者の者です。早速質問させてください。 (1) char a; aの中身には、アルファベット小文字の文字列が5個並んでいるとします。 その文字列を前後反転させるにはどうすればいいでしょうか? 例えばabcdeと並んでいる文字列をedcbaとする場合です。(キーボードからabcdeと打ち込んだとき、aにedcbaと格納させたいのです) (2) char a;   char b;  中身は文字列で、二つを合体させたい場合どうすればいいのでしょうか?  例えば aにはth 、bにはatと格納されている場合thatと繋げたいのです。  よろしくお願いします。

  • 数式で表示している文字列の特定文字列のみフォント設定したい

    例としてA1に"あ",B1に"い",C1に"う"と入力してありD1に =A1&B1&C1 とすると、D1には"あいう"と表示されますが、B1の文字だけ太字で表示させる ことは可能ですか。 また、E1に =A1&"+"&B1&"-"&C1 とすると、E1には"あ+い-う"と表示されますが、"-"だけ赤字で表示させる ことは可能ですか。

  • Perlでの文字列操作について

    Perlを使用しての文字列操作について教えてください。 たとえば以下のような数字とアルファベットが順に並ぶ文字列があるとします。 11A4C555D67B114B9423C アルファベットは1文字ですが、数字は何個でも連続で並びます。 この文字列を「数字アルファベット」の部分で分割し、配列に格納したいのですが、うまくいきません。 @array=('11A','4C','555D','67B','114B','9423C') どなたか教えてください。よろしくお願いいたします。

  • excelの文字列の操作について

    A列、C列、E列、G列・・・の1行目にはタイトルが入力されており、 B列、D列、F列、H列・・・には不特定の文字列が入力されており、それぞれ行数も不特定です。 A列、C列、E列、G列・・・の1行目のタイトルはA列にまとめ、B列、D列、F列、H列・・・の文字列はB列にまとめたいです。 下の例の場合だと、C列の1行目のタイトルをB列の下端の左下にあたる(A7)に移動させ、 D列の2行目から入力された文字列を右となりの(B7)に移動させたいです。これの繰り返しです。     A列     B列     C列     D列 1    あ       A       い       2             B                a   3            C                b 4              D               c 5             E                6              F                            ↓     A列     B列     C列     D列 1    あ       A              2             B                   3            C                 4              D                5             E                6              F      7      い      a 8             b 9             c よろしくお願いします。

  • 2~3個の文字の2~3乗

    例えば 文字が2個の場合 (a+b)^2=a^2+2ab+b^2 (a+b)^3=a^3+3a^2b+3ab^2+b^3 (a+b)^4=a^4+… 以下、「パスカルの三角形」で いくらでも機械的に書き出すことができますが 文字が3個になった場合 (a+b+c)^2=a^2+b^2+c^2+??? (a+b+c)^3=a^3+b^3^+c^3+??? … 続けて、文字が4個になった場合 (a+b+c+d)^2=a^2+b^2+c^2+d^2+??? (a+b+c+d)^3=a^3+b^3+c^3+d^3+??? … それで、一般的にn個の文字で、n乗になった場合 (a+b+c+…+z)^n (注:この z の表現は間違っています。アルファベットは26個しかありません…) どうなるのでしょうか? これらの公式ってあるのでしょうか?

  • Excelで文字列を独自の二進数で表したい。

    A,B,C,D,Eのいずれかを含む文字が順不同でセルに入っているものから、 A=10000 B=1000 C=100 D=10 E=1 と置換して足した、二進数であらわしたり、逆にその二進数から文字列に戻したりしたいです。 (例:DAなら10010、EBCなら1101) VBAの自作関数を含めてExcelの関数でできる方法があればお教えくださると助かります。

  • 組合せの総数がわかりません.

    例えばa,b,c,dの四つの組み合わせ方を挙げます. 組み合わせるものを同じ数字であらわすとしまして, 1123は,a,bを組み合わせてbとcは別々という意味です.ただし,2213も3321も3312も1123と同じ組合せになります. つまり総列挙すると 1123(ab,c,d) 1213(ac,b,d) 1231(ad,c,b) 2113(a,bc,d) 2131(a,bd,c) 2311(a,b,cd) 1122(ab,cd) 1212(ac,bd) 1221(ad,bc) 1112(abc,d) 1121(abd,c) 1211(acd,b) 2111(a,bcd) 1111(abcd) 1234(a,b,c,d) の15通りになるかと思います. 今,4つのアルファベットの組合せでしたが, これをnとすると,組合せの総数はどのようになりますでしょうか? 定式化不可能なのでしょうか?不可能ならこの組合せ総数が指数関数的に増大することを示せればよいのですが.

  • A列の文字列からB列の文字列を

    A列の文字列からB列の文字列を 引く(マイナス)することはできないでしょうか? 例) A列 - B列 - C列 ABCD - CD - AB ABCD - BCD - A ABCD - GH - ABCD という風にC列に関数で結果を表示したいのです。 方法はないでしょうか? よろしくお願いします。