Re: Partitioning a list into unequal partitions
- To: mathgroup at smc.vnet.net
- Subject: [mg47686] Re: Partitioning a list into unequal partitions
- From: Mark Fisher <mark at markfisher.net>
- Date: Thu, 22 Apr 2004 02:38:30 -0400 (EDT)
- References: <c5gfdp$an0$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
For what it's worth, here's my way:
UnevenPartition::usage = "UnevenPartition[list, lengths] returns the
list partitioned into groups with the specified successive lengths."
UnevenPartition[list_, lengths_] :=
First@Fold[Regroup, {{}, list}, lengths]
Regroup[{a_, b_}, n_] := {Append[a, Take[b, n]], Drop[b, n]}
UnevenPartition[Range[10], Range[4]]
--Mark.
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
>
>
>
>