You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							28 lines
						
					
					
						
							606 B
						
					
					
				
			
		
		
	
	
							28 lines
						
					
					
						
							606 B
						
					
					
				/**
 | 
						|
 * Obliterator Power Set Function
 | 
						|
 * ===============================
 | 
						|
 *
 | 
						|
 * Iterator returning the power set of the given array.
 | 
						|
 */
 | 
						|
var Iterator = require('./iterator.js'),
 | 
						|
  combinations = require('./combinations.js'),
 | 
						|
  chain = require('./chain.js');
 | 
						|
 | 
						|
/**
 | 
						|
 * Power set.
 | 
						|
 *
 | 
						|
 * @param  {array}    array - Target array.
 | 
						|
 * @return {Iterator}
 | 
						|
 */
 | 
						|
module.exports = function powerSet(array) {
 | 
						|
  var n = array.length;
 | 
						|
 | 
						|
  var iterators = new Array(n + 1);
 | 
						|
 | 
						|
  iterators[0] = Iterator.of([]);
 | 
						|
 | 
						|
  for (var i = 1; i < n + 1; i++) iterators[i] = combinations(array, i);
 | 
						|
 | 
						|
  return chain.apply(null, iterators);
 | 
						|
};
 |