nekoTheShadow’s diary

IT業界の片隅でひっそり生きるシステムエンジニアです(´・ω・`)

javascriptで順列と重複順列と組み合わせと重複組み合わせとべき集合。

ここ2-3日続けてきたjavascriptシリーズについて、まとめてみました。



上から

  • 順列
  • 重複順列
  • 組み合わせと重複組み合わせ

について書いた過去記事です。
一番古い記事が質的にも量的にもよくまとまっていると思います。
というより、それがここ数日の元凶だったり。

次が作ったメソッドのまとめです。

ご利用はご自由にどうぞ。
使う人はいないと思いますが……

これだけで終わってもよいのですが、さすがに寂しいので、おまけ。
べき集合という集合があります。
簡単にいうと、ある集合Pの部分集合の集合です。
たとえば P = [0,1,2]とすると、以下がPのべき集合の要素となります。

[]
[0]
[1]
[2]
[0,1]
[0,2]
[1,2]
[0,1,2] 

今日はべき集合を求めるArrayのクラスメソッドjavascriptで作ります。
やり方としては下の図を見てもらえればわかりやすいはず。

10進数 2進数の配列 要素が1のインデックス
0 [0,0,0] なし
1 [0,0,1] 2
2 [0,1,0] 1
3 [0,1,1] 1,2
4 [1,0,0] 0
5 [1,0,1] 0,2
6 [1,1,0] 0,1
7 [1,1,1] 0,1,2

何を言わんとしているか、わかっていただければ幸いです。
2進数は[true,false].repeatedPermutationで作り、trueとなるインデックスを取得。
最後に元の配列に落とし込んでいけば完成というわけですね。

まあ例のごとく使い道はなさそうでござる。
個人的にはうまく動いていて大満足なのですがね。