順列の全パターンを、ズラーッと並べるエクセル・マクロを作ってみました。
興味のあるかたは、こちらをクリックして、ダウンロードして下さい。
「イヌ、ネコ、ネズミ、サル 4つの動物の並び方は、何通りか」
というのは、数学の順列で簡単に計算できます。
エクセル関数でも、Permut(4,4)=24と、すぐに答えが出せる。
これが、「イヌ、ネコ、ネズミ、ネズミ 3種4匹の動物の並び方は、何通りか」
となると、ちょっとややこしい。
それじゃ、具体的な並び方をズラーッと列記してみよう。
・・・となると、簡単にはいきません。
どうも気になっちゃって、マクロを作ってみました。
#仕事もしないで、何をやっているんでしょう。
アルゴリズムをどう作るかに悩みましたが、
「n桁のn進数に当てはめる」とわかると、意外と短くてすみました。
ただ、4匹なら「4桁の4進数すべてをチェック」するので、
4の4乗=256回、プログラムが回ります。
指数関数で回数が増えるので、7匹だと30分ぐらいかかっちゃう。
単純化するために、「文字の順列」にしました。
上記のような「複数の単語の順列」は、マクロをちょっと書き換えればOK。
これを使うと、アナグラム解析ができそうです。
※アナグラム=カナを並べ替えて言葉を作ること
「かたねぶや」の順列を出力、
それぞれについてGoogle検索の結果数を取得する。
いちばん多いものが、たぶん答えだろう、と。
分析に時間がかかりすぎて、実用性はありませんが。
(人間なら、早い人なら10秒ぐらいで答えを出しちゃう。)
One thought on “順列の全パターンを列記するマクロ”