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