Re: Q: extract all k-tuple from a list of n elements
- To: mathgroup at smc.vnet.net
- Subject: [mg49730] Re: Q: extract all k-tuple from a list of n elements
- From: pnardon <pnardon at ulb.ac.be>
- Date: Thu, 29 Jul 2004 07:45:34 -0400 (EDT)
- References: <ce2fv9$8rm$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Klaus Duellmann wrote:
> Question: How can I extract all k-tuple from a list of n elements
> (without considering permutations of the k-tuple)?
>
> Example: For the special case k=3 one solution would be
>
> Flatten[Table[{i, j, k}, {i, 1, n - 2}, {j, i + 1, n - 1}, {k, j + 1,
> n}], 2];
>
> A generalization of this solution for all k >=1 would involve to create
> 'automatically' a table of dimension k, but how can this be implemented?
>
> Any help is appreciated.
>
> Regards,
>
> Klaus
>
TuTu[el_, n_] := Map[Sort[Join[el, {#}]] &, Complement[Range[n], el]];
ZaZa[x_, n_] := Complement[Flatten[Map[Sort[TuTu[#, n]] &, x], 1], {}];
ZZZ[m_, n_] := Module[{tmp},
tmp = Complement[Flatten[Map[TuTu[{#}, n] &, Range[n]], 1], {}];
Nest[ZaZa[#, n] &, tmp, m - 2]]
ZZZ will give the answer (be carefull m>1)
m gives the dimensions that you want
n gives the range needed
In[395]:=
ZZZ[8,10]
Out[395]=
{{1,2,3,4,5,6,7,8},{1,2,3,4,5,6,7,9},{
1,2,3,4,5,6,7,10},{1,2,3,4,5,6,8,9},{1,2,3,4,5,6,8,10},{1,2,3,4,5,
6,9,10},{1,2,3,4,5,7,8,9},{1,2,3,4,5,7,8,10},{1,2,3,4,5,7,9,10},{1,2,3,4,
5,8,9,10},{1,2,3,4,6,7,8,9},{1,2,3,4,6,7,8,10},{1,2,3,4,6,7,9,10},{1,2,3,
4,6,8,9,10},{1,2,3,4,7,8,9,10},{1,2,3,5,6,7,8,9},{1,2,3,5,6,7,8,10},{1,2,
3,5,6,7,9,10},{1,2,3,5,6,8,9,10},{1,2,3,5,7,8,9,10},{1,2,3,6,7,8,9,10},{
1,2,4,5,6,7,8,9},{1,2,4,5,6,7,8,10},{1,2,4,5,6,7,9,10},{1,2,4,5,6,8,9,
10},{1,2,4,5,7,8,9,10},{1,2,4,6,7,8,9,10},{1,2,5,6,7,8,9,10},{1,3,4,5,6,
7,8,9},{1,3,4,5,6,7,8,10},{1,3,4,5,6,7,9,10},{1,3,4,5,6,8,9,10},{1,3,4,
5,7,8,9,10},{1,3,4,6,7,8,9,10},{1,3,5,6,7,8,9,10},{1,4,5,6,7,8,9,10},{2,
3,4,5,6,7,8,9},{2,3,4,5,6,7,8,10},{2,3,4,5,6,7,9,10},{2,3,4,5,
6,8,9,10},{2,3,4,5,7,8,9,10},{2,3,4,6,7,8,9,10},{2,3,5,6,7,8,9,10},{2,4,
5,6,7,8,9,10},{3,4,5,6,7,8,9,10}}
--
Pasquale Nardone
UniversitÂ? Libre de Bruxelles
Physique GÂ?nÂ?rale CP 231,
Sciences-Physique-AgrÂ?gation
Bld du Triomphe, 2
1050 Bruxelles, Belgium
tel: +32.2.6505515
tel secr: +32.2.6505618
fax: +32.2.6505332
web: http://homepages.ulb.ac.be/~pnardon/
ou encore http://physinfo.ulb.ac.be/