• 締切済み

組み合わせの列挙について

こんばんは。前回質問させて頂いた事 http://oshiete1.goo.ne.jp/qa5506662.html でちょっと数学的な壁にぶつかってしまいました。ここではその部分だけを具体的に質問させて頂きます。 Y と N の2つの文字を7列に並べます Y,Y,Y,Y,Y,Y,Y Y,Y,Y,Y,Y,Y,N Y,Y,Y,Y,Y,N,Y Y,Y,Y,Y,N,Y,Y Y,Y,Y,N,Y,Y,Y この先、2の7乗=128通り、続くと思うのですが、実際に列挙して128通り書いていたら、ややこしくなってしまいました。そこで、全ての組み合わせの列挙をする数学的方法といいますか、何かそういったものはあるのでしょうか?やはり、ひとつずつ書いていくしかないのでしょうか?よろしくお願いします。

みんなの回答

noname#144013
noname#144013
回答No.2

こんにちは。 やりたいことは、ご提示の前回のご質問との関連で、  『PHPなどのCGIスクリプトに読み込ませるためのパターンファイル(CSV形式)   を作成したい。』 と解釈させて頂きました。 的外れの場合はすみません。 当方は、PHPに関しては経験がないので、ご要望のパターンファイル作成に ついてのみコメントさせて頂きます。 以下は、一例として、Excelを使ってパターンファイルを作成する方法です。 注)ですので、『Excelをお持ちの場合限定』での話しになります。 ■Excelによるパターン作成手順 注)下記は、Excel2000での操作例です。   他のバージョンのExcelの場合は、操作方法が異なるかもしれません。   その際は、該当する同操作に適せん置き換えて下さい。 1.Excelのワークブックを新規作成します。 2.パターン作成に使用する関数「DEC2BIN」を使用可能にするために、   「分析ツール」を組み込みます。  今回のパターン作成には、「10進数→2進数変換」を行う関数「DEC2BIN」  を使用します。  この関数を使うには、Excelに「分析ツール」を組み込む必要があります。  分析ツールを組み込むには、セットアップ プログラムを実行して分析ツール  を組み込みます。  ※詳しくは、Excelのヘルプより「分析ツール」で検索して、組み込み方法を   ご覧下さい。  分析ツールを組み込んだ後は、以下の手順で、その分析ツールを登録する  必要があります。  1)メニュー操作: 「ツール」 → 「アドイン」  2)表示された「アドイン」ダイアログ画面の、アドイン名のリスト内にある、    「分析ツール」のチェックマークを「ON」にします。  3)[OK]ボタンをクリックします。  ※これで、「分析ツール」が登録されると思います。 3.ここから、本来のパターン作成作業を行います。  以下の操作で、ワークシートのセルに数式を設定します。  1)A1セルに以下の数式を設定します。    A1 =MID(SUBSTITUTE(SUBSTITUTE(DEC2BIN(       ROW($A1)-1,7),"1","Y"),"0","N"),COLUMN(A$1),1)    ※上記の数式は、表示の都合上2行になっていますが、実際は1行で記述     して下さい。    ※他のセル(A1:G128のセル範囲)には、以下の手順で数式をコピーします。  2)A1セルをマウスで選択します。  3)A1セルの右下角にマウスを移動し、マウスカーソルが"+"表示になったら    左クリックして、そのまま右方向に、G1セル(必要な列数分の位置のセル)    までドラッグします。    ※これで、G1セルまで数式がコピーされます。    ※ここで、セルの選択状態はそのままにしておきます  4)さらに、選択範囲の右下角にマウスを移動し、マウスカーソルが"+"表示に    なったら左クリックして、今度は下方向に、128行目までドラッグします。    ※これでドラッグした範囲に数式がコピーされます。  以上で、A1~G128のセル範囲に、目的のパターンが表示されると思います。  ※必要であれば、他の列のセルに「商品名」などの項目を付加して下さい。 4.ここで、一旦、Excelワークブックを保存します。   ※ここでは、通常のExcelワークブック形式で保存して下さい。 5.作成したパターンをCSVファイルに保存します。  1)Excelのシート画面を、パターンを作成したシートにします。    ※パターンを作成したシートを最前面のアクティブな画面にします。  2)メニュー操作: 「ファイル」 → 「名前を付けて保存」  3)「ファイル名を付けて保存」ダイアログ画面で、    「ファイルの種類」より、「CSV(カンマ区切り)」を選択します。  4)適当な名前を付けて、ファイルを保存します。    ※警告メッセージが表示された場合は、[OK]ボタン、または、     「はい」ボタンをクリックして下さい。 以上で、作業完了です。 ※添付画像は、上記操作で作成したExcelワークシートの画面です。 なお、パターンの横方向の列数(カラム数)を増やす、または、減らす場合は、 A1に設定する以下の数式の、   =MID(SUBSTITUTE(SUBSTITUTE(DEC2BIN(   ROW($A1)-1,7),"1","Y"),"0","N"),COLUMN(A$1),1)           ↑   ここの値(今回は7)を必要な列数の値に変更して下さい。     ・4列にする場合は、4     ・9列にする場合は、9   など。 上記の数式の変更後、必要なセル範囲に、A1セルをコピー&ペーストして 数式をコピーして下さい。 注)DEC2BIN関数の仕様上、扱える数は、-512~+511の範囲となっています   ので、今回の数式のままで扱える「列数」及び、その「パターンの数」は、     最大 9列まで = 2の9乗 = 512パターンまで   となります。 以上です。参考になれば幸いです。

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.1

7桁の2進数だと思って0000000~1111111まで書けば混乱しないのでは。

関連するQ&A