Computer >> Máy Tính >  >> Lập trình >> Javascript

Tìm bộ nguồn cho một bộ trong JavaScript Power Set

Tập hợp lũy thừa của một tập S là tập hợp của tất cả các tập con của S, bao gồm cả tập rỗng và chính S. Công suất của bộ S được ký hiệu là P (S).

Ví dụ

Nếu S ={x, y, z}, các tập con là -

{
   {},
   {x},
   {y},
   {z},
   {x, y},
   {x, z},
   {y, z},
   {x, y, z}
}

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một mảng làm đối số duy nhất. Hàm sẽ tìm và trả về bộ nguồn cho mảng đầu vào.

Ví dụ

Sau đây là mã -

const set = ['x', 'y', 'z'];
const powerSet = (arr = []) => {
   const res = [];
   const { length } = arr;
   const numberOfCombinations = 2 ** length;
   for (let combinationIndex = 0; combinationIndex < numberOfCombinations; combinationIndex += 1) {
      const subSet = [];
      for (let setElementIndex = 0; setElementIndex < arr.length;
      setElementIndex += 1) {
         if (combinationIndex & (1 << setElementIndex)) {
            subSet.push(arr[setElementIndex]);
         };
      };
      res.push(subSet);
   };
   return res;
};
console.log(powerSet(set));

Đầu ra

Sau đây là kết quả trên bảng điều khiển -

[
   [],
   [ 'x' ],
   [ 'y' ],
   [ 'x', 'y' ],
   [ 'z' ],
   [ 'x', 'z' ],
   [ 'y', 'z' ],
   [ 'x', 'y', 'z' ]
]