Wolfram Function Repository
Instantuse addon functions for the Wolfram Language
Function Repository Resource:
Generate subsets that satisfy a certain criterion
ResourceFunction["SelectSubsets"][list,crit] gives a list of all possible subsets of list that satisfy the criterion crit. 

ResourceFunction["SelectSubsets"][list,n,crit] gives all subsets containing at most n elements that satisfy crit. 

ResourceFunction["SelectSubsets"][list,{n},crit] gives all subsets containing exactly n elements that satisfy crit. 

ResourceFunction["SelectSubsets"][list,{n_{min},n_{max}},crit] gives all subsets containing between n_{min} and n_{max} elements that satisfy crit. 

ResourceFunction["SelectSubsets"][list,nspec,crit,s] limits the results to the first s subsets. 
Select subsets from {1,2,3,4,5} that add up to 10:
In[1]:= 

Out[1]= 

Select subsets of length 2 to 4 that sum up to a prime:
In[2]:= 

Out[2]= 

Select all subsets of length 2 that add up to 6:
In[3]:= 

Out[3]= 

Select all subsets that add up to 0:
In[4]:= 

Out[4]= 

Select all subsets of odd length that add up to a prime:
In[5]:= 

Out[5]= 

Select the first 8 subsets that add up to a prime:
In[6]:= 

Out[6]= 

Find subsets that add up to 25:
In[7]:= 

Out[7]= 

The main difference between Select and Subsets, and SelectSubsets is the amount of memory used:
In[8]:= 

Out[8]= 

Compared to naive implementation, which requires roughly 1000 times more memory:
In[9]:= 

Out[9]= 

Verify the result is the same:
In[10]:= 

Out[10]= 

With a criterion that is a tautology, SelectSubsets and Subsets give the same results:
In[11]:= 

Out[11]= 

SelectSubsets might not be able to return the number of elements that are requested:
In[12]:= 

Out[12]= 

Find subsets that add up to 0:
In[13]:= 

Out[14]= 

Visualize the lengths of the lists:
In[15]:= 

Out[15]= 

This work is licensed under a Creative Commons Attribution 4.0 International License