Re: find subsets

*To*: mathgroup at smc.vnet.net*Subject*: [mg104736] Re: find subsets*From*: Helen Read <hpr at together.net>*Date*: Sun, 8 Nov 2009 06:47:22 -0500 (EST)*References*: <hd3mn9$9l4$1@smc.vnet.net>*Reply-to*: HPR <read at math.uvm.edu>

r_poetic wrote: > Hello, > here is a quick question from a novice. > > First, generate a list of subsets using Subsets or KSubsets > functions. > > Ns = KSubsets[{a,b,c,d,e},3] = {{a,b,c},{a,b,d},{a,b,e},{a,c,d}, etc.} It's a good practice to use names that begin with a lower case letter, to avoid conflict with the names of built-in symbols and functions. > How can one infer from that list a list of its members that contain > given elements, e.g. a list of members that contain b, or those that > contain both b and c? For illustration: > > Some_function[Ns, b and c] = { {a,b,c},{b,c,d},{b,c,e}} > > I keep thinking there must be a direct way to do this using Select or > some other function? Select together with MemberQ will do the job. First, generate the subsets: sets = Subsets[{a, b, c, d, e}, {3}] This will select the ones that contain b: Select[sets, MemberQ[#, b] &] This will select the ones that contain both b and c: Select[sets, (MemberQ[#, b]) && (MemberQ[#, c]) &] And this will select the ones that contain b or c: Select[sets, (MemberQ[#, b]) || (MemberQ[#, c]) &] -- Helen Read University of Vermont