Re: Partitioning a list into unequal partitions
- To: mathgroup at smc.vnet.net
- Subject: [mg47496] Re: [mg47454] Partitioning a list into unequal partitions
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Wed, 14 Apr 2004 07:16:51 -0400 (EDT)
- References: <200404131026.GAA10787@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
*This message was transferred with a trial version of CommuniGate(tm) Pro*
On 13 Apr 2004, at 19:26, DIAMOND Mark R. wrote:
> Could someone please show me a simple (non-procedural) way of
> partitioning a
> list into 1,2,3 ... n disjoint sublists, where the length of the list
> is
> guaranteed to be correct (i.e. n*(n+1)/2)
>
> I can't see a way, and yet I'm sure there *must* be a one-liner using
> Fold.
>
> Cheers
>
> Mark R. Diamond
>
>
>
Well, it kind of depends on the meaning of "simple" and
"non-procedural". For example, what does the follwoing qualify:
f[l_List] := (Take[l, #1] & ) /@
Table[{(1/2)*i*(i + 1) + 1, (1/2)*(i + 1)*
(i + 2)}, {i, 0, (1/2)*
(-3 + Sqrt[1 + 8*Length[l]])}]
This will work provided your list is of the right length. For example:
l=Range[6*7/2]
Out[73]=
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21}
f[l]
{{1},{2,3},{4,5,6},{7,8,9,10},{11,12,13,14,15},{16,17,18,19,20,21}}
Andrzej Kozlowski
Chiba, Japan
http://www.mimuw.edu.pl/~akoz/
- References:
- Partitioning a list into unequal partitions
- From: "DIAMOND Mark R." <dot@dot.dot>
- Partitioning a list into unequal partitions