順列の全パターンを列記するマクロ

順列の全パターンを、ズラーッと並べるエクセル・マクロを作ってみました。
興味のあるかたは、こちらをクリックして、ダウンロードして下さい。

 

「イヌ、ネコ、ネズミ、サル 4つの動物の並び方は、何通りか」
というのは、数学の順列で簡単に計算できます。
エクセル関数でも、Permut(4,4)=24と、すぐに答えが出せる。

これが、「イヌ、ネコ、ネズミ、ネズミ 3種4匹の動物の並び方は、何通りか」
となると、ちょっとややこしい。

それじゃ、具体的な並び方をズラーッと列記してみよう。
・・・となると、簡単にはいきません。
どうも気になっちゃって、マクロを作ってみました。
#仕事もしないで、何をやっているんでしょう。
Image 006

アルゴリズムをどう作るかに悩みましたが、
「n桁のn進数に当てはめる」とわかると、意外と短くてすみました。
ただ、4匹なら「4桁の4進数すべてをチェック」するので、
4の4乗=256回、プログラムが回ります。
指数関数で回数が増えるので、7匹だと30分ぐらいかかっちゃう。

 

単純化するために、「文字の順列」にしました。
上記のような「複数の単語の順列」は、マクロをちょっと書き換えればOK。
Image 001
Image 002
Image 004
Image 003

 

これを使うと、アナグラム解析ができそうです。
※アナグラム=カナを並べ替えて言葉を作ること
Image 005

「かたねぶや」の順列を出力、
それぞれについてGoogle検索の結果数を取得する。
いちばん多いものが、たぶん答えだろう、と。

分析に時間がかかりすぎて、実用性はありませんが。
(人間なら、早い人なら10秒ぐらいで答えを出しちゃう。)

 

 

One thought on “順列の全パターンを列記するマクロ

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)