teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

ソース修正

2021/08/26 00:50

投稿

退会済みユーザー
answer CHANGED
@@ -73,4 +73,24 @@
73
73
 
74
74
 
75
75
 
76
- **補足: ** `X`のべき集合を、数学で書くとき、「2のX乗」みたいに書くこともあってん。意味するところとして、`X` の要素の数を `|X|` と書くとすると、`X`のべき集合の要素の数は 2の|X|乗になるねん。今回の例だと、`X = {1, 2, 3, 4, 5, 6}` で、要素の数は 6 個やから、そのべき集合の要素数は 2の6乗の64やねん。これは、`'ABCDEFG'`から作られるピリオド入れた文字列のパターン数に一致するゆうこっちゃ。ただし、64パターンの中には、0個のピリオドを入れる、つまりピリオドを入れないという操作で得られる、元の文字列と同じ文字列も含まれんで。(なぜゆうたら、べき集合には必ず空集合∅が含まれとるからやねん)
76
+ **補足: ** `X`のべき集合を、数学で書くとき、「2のX乗」みたいに書くこともあってん。意味するところとして、`X` の要素の数を `|X|` と書くとすると、`X`のべき集合の要素の数は 2の|X|乗になるねん。今回の例だと、`X = {1, 2, 3, 4, 5, 6}` で、要素の数は 6 個やから、そのべき集合の要素数は 2の6乗の64やねん。これは、`'ABCDEFG'`から作られるピリオド入れた文字列のパターン数に一致するゆうこっちゃ。ただし、64パターンの中には、0個のピリオドを入れる、つまりピリオドを入れないという操作で得られる、元の文字列と同じ文字列も含まれんで。(なぜゆうたら、べき集合には必ず空集合∅が含まれとるからやねん)
77
+
78
+
79
+ **さらに追伸:** 要素n個の集合のべき集合を、再帰と、0以上(2のn乗-1)以下の整数に対するビット操作の2通りで作ろうゆう人がおったわ➡ [Power Set Algorithm with Recursion or Bits](https://blog.devgenius.io/power-set-algorithm-with-recursion-or-bits-cc3ffcfc0daa)
80
+ ビット操作でやるのやったら、こちらさんが書いたコード
81
+ ```javascript
82
+ var powerSet = function (str) {
83
+ const results = [];
84
+ for (let i = 0; i < 1 << str.length; i++) {
85
+ let subset = "";
86
+ for (let j = 0; j < str.length; j++) {
87
+ if (i & (1 << j)) {
88
+ subset += str[j];
89
+ }
90
+ }
91
+ results.push(subset);
92
+ }
93
+ return results;
94
+ };
95
+ ```
96
+ の、 `if (i & (1 << j)) {`  でやってる `&` や `<<` だったりが参考になるやもしれんね〜