File tree Expand file tree Collapse file tree 2 files changed +44
-0
lines changed
src/08-dynamic-programming Expand file tree Collapse file tree 2 files changed +44
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ 8.4 Power Set: Write a method to return all subsets of a set.
3+ */
4+
5+ const bm = require ( '../05-bits/00-bit-manipulation' ) ;
6+
7+ function getSubsets ( set ) {
8+ const length = set . length ;
9+ const subsets = [ ] ;
10+
11+ for ( let mask = 0 ; mask < Math . pow ( 2 , length ) ; mask ++ ) {
12+ const subset = [ ] ;
13+
14+ set . forEach ( ( element , index ) => {
15+ if ( bm . getBit ( mask , index ) > 0 ) {
16+ subset . push ( element ) ;
17+ }
18+ } ) ;
19+
20+ subsets . push ( subset ) ;
21+ }
22+
23+ return subsets ;
24+ }
25+
26+ module . exports = getSubsets ;
Original file line number Diff line number Diff line change 1+ const expect = require ( 'chai' ) . expect ;
2+ const getSubsets = require ( './power-set' ) ;
3+
4+ describe ( 'getSubsets' , function ( ) {
5+ it ( '1 stair' , function ( ) {
6+ const set = [ 1 , 2 , 3 ] ;
7+ expect ( getSubsets ( set ) ) . to . eql ( [
8+ [ ] ,
9+ [ 1 ] ,
10+ [ 2 ] ,
11+ [ 1 , 2 ] ,
12+ [ 3 ] ,
13+ [ 1 , 3 ] ,
14+ [ 2 , 3 ] ,
15+ [ 1 , 2 , 3 ]
16+ ] ) ;
17+ } ) ;
18+ } ) ;
You can’t perform that action at this time.
0 commit comments