From cdd4c93f6d1876ab9aa7a5d6d4e3b2b603431de9 Mon Sep 17 00:00:00 2001 From: imshreya2000 <73038200+imshreya2000@users.noreply.github.com> Date: Thu, 26 Oct 2023 13:58:36 +0530 Subject: [PATCH 1/3] Create GenerateSubsets --- Backtracking/GenerateSubsets | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 Backtracking/GenerateSubsets diff --git a/Backtracking/GenerateSubsets b/Backtracking/GenerateSubsets new file mode 100644 index 0000000000..6cccc5b27f --- /dev/null +++ b/Backtracking/GenerateSubsets @@ -0,0 +1,26 @@ +function generateSubsets(nums) { + const subsets = []; + + function backtrack(start = 0, currentSubset = []) { + // Add the currentSubset to the subsets array + subsets.push([...currentSubset]); + + // Explore all possible subsets by backtracking + for (let i = start; i < nums.length; i++) { + currentSubset.push(nums[i]); + backtrack(i + 1, currentSubset); + currentSubset.pop(); + } + } + + backtrack(); + return subsets; +} + +const inputSet = [1, 2, 3]; +const allSubsets = generateSubsets(inputSet); + +console.log("All Subsets:"); +for (const subset of allSubsets) { + console.log(subset); +} From ad0e57fa058ccca55eb9dfb97a99ee975c14d0ef Mon Sep 17 00:00:00 2001 From: imshreya2000 <73038200+imshreya2000@users.noreply.github.com> Date: Fri, 27 Oct 2023 17:05:27 +0000 Subject: [PATCH 2/3] test file added --- Backtracking/tests/GenerateSubsets.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 Backtracking/tests/GenerateSubsets.js diff --git a/Backtracking/tests/GenerateSubsets.js b/Backtracking/tests/GenerateSubsets.js new file mode 100644 index 0000000000..faed6d3c6d --- /dev/null +++ b/Backtracking/tests/GenerateSubsets.js @@ -0,0 +1,22 @@ +import { generateSubsets } from '../GenerateSubsets' + +describe('generateSubsets', () => { + it('should generate all subsets for an array', () => { + const inputSet = [1, 2, 3]; + const expectedSubsets = [ + [], + [1], + [1, 2], + [1, 2, 3], + [1, 3], + [2], + [2, 3], + [3] + ]; + + const subsets = generateSubsets(inputSet); + + // Check if the generated subsets are deep equal to the expected subsets + expect(subsets).to.deep.have.members(expectedSubsets); + }); +}); From 8e2ae82c25b2d991f2e1bb17987768a847043332 Mon Sep 17 00:00:00 2001 From: imshreya2000 <73038200+imshreya2000@users.noreply.github.com> Date: Fri, 27 Oct 2023 17:15:21 +0000 Subject: [PATCH 3/3] explanation added --- Backtracking/tests/GenerateSubsets.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Backtracking/tests/GenerateSubsets.js b/Backtracking/tests/GenerateSubsets.js index faed6d3c6d..fc977516e2 100644 --- a/Backtracking/tests/GenerateSubsets.js +++ b/Backtracking/tests/GenerateSubsets.js @@ -1,3 +1,5 @@ +// we define a generateSubsets function that uses backtracking to generate all possible subsets of a given set (array of numbers). The backtrack function is a recursive function that explores all possible subsets by considering or excluding each element. + import { generateSubsets } from '../GenerateSubsets' describe('generateSubsets', () => {