回答編集履歴
1
ソース修正
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)) {` でやってる `&` や `<<` だったりが参考になるやもしれんね〜
|