Re: Subsets
- To: mathgroup at smc.vnet.net
- Subject: [mg4987] Re: Subsets
- From: Clemens Frey <Clemens.Frey at uni-bayreuth.de>
- Date: Thu, 17 Oct 1996 00:41:03 -0400
- Organization: uni-bayreuth.de
- Sender: owner-wri-mathgroup at wolfram.com
Fabiana Costa Pereira wrote:
>
> I need to know if there is a function in Mathematica
> that generates the set of all subsets of a list.
Hi,
as far as i am concerned, there is no such function. But I had that
problem myself some time ago, and here is how I solved it :
addEl[ set_List, el_ ] := Flatten[ {#,Flatten[{#,el}]}& /@ set, 1 ];
allSs[ set_List ] := Fold[ addEl, {{}}, Union[set] ];
Then you can use allSs[...] to obtain a list of all subsets of
a given set. Because you cannot be sure that a list contains all its
elements exacly once, I use Union[set] to get an (ordered) list
of all elements of set. So you can type in this:
IN>> allSs[ {1,2,3} ] //Union
...and you will get :
OUT>> {{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}}
Of course, you can also use symbols instead of numbers as elements of
your list. Because I used Union[set] in the definition of allSs, the
following
IN>> allSs[ {a,a} ]
will result in
OUT>> {{},{a}}
and not in
NOT OUT>> {{},{a},{a},{a,a}} .
Hope I could help you
Clemens
(-: Clemens.Frey at uni-bayreuth.de :-)