Re: List help needed
- To: mathgroup at smc.vnet.net
- Subject: [mg5091] Re: List help needed
- From: "Seth J. Chandler" <SChandler at uh.edu>
- Date: Wed, 30 Oct 1996 22:03:39 -0500
- Organization: University of Houston
- Sender: owner-wri-mathgroup at wolfram.com
Here's one way of doing it:
Needs["DiscreteMath`Combinatorica`"]
p[\[CapitalNu]_,n_]:=
Flatten[Map[Permutations,Select[Partitions[\[CapitalNu]],Length[#]==n&]],1]
cutup[x_List,pieces_]:=
Map[Take[x,#]&,Map[{1,0}+#&,Partition[FoldList[Plus,0,pieces],2,1]]]
answer[x_List,n_]:=Map[cutup[x,#]&,p[Length[x],n]]
John Rowney wrote:
>
> Hi,
>
> I need a little help with lists. What I would like to do is the
> following:
>
> From a list of length N, construct all possible lists of length n<N from
> N by combining adjacent elements of the original list into sub lists.
> This might become clearer with an example.
>
> Given {a,b,c,d,e} of length 5, ALL possible length 4 lists subject to
> the conditions above are:
>
> {{a,b},c,d,e}, {a,{b,c},d,e}, {a,b,{c,d},e} and {a,b,c,{d,e}}
>
> two of the possible length 3 lists are
>
> {a,{b,c,d},e} and {{a,b},c,{d,e}}
>
> I hope you get the picture.
>
> In the "real" problem, N would be around 20 and n would be around 10.
>
> Thanks in advance
>
> John
> jrowney at arco.com