RE: There must be a better way!

• To: mathgroup at smc.vnet.net
• Subject: [mg2238] RE: [mg2322] There must be a better way!
• From: "Chandler, Seth" <SChandler at UH.EDU>
• Date: Wed, 25 Oct 1995 02:12:42 -0400

```x={A,B,C,D,E,F,G,H,I,J,K,L};

y={2,3,4,3};

whatIwant = Drop[With[{q=FoldList[Drop[#1,#2]&,x,y]},

{{A, B}, {C, D, E}, {I, F, G, H}, {J, K, L}}
----------
To: mathgroup at smc.vnet.net
> To: mathgroup
> Subject: [mg2322] There must be a better way!
> Date: Tuesday, October 24, 1995 2:14AM
>
>
> Hi.  I'm trying to write a function that partitions a list into
> segments of length given by another length. eg.
>         Given l1 = {A,B,C,D,E,F,G,H,I,J}
>         and   l2 = {2,3,4,1}
> I want to be able to say
>         In[1] := MyPartition[l1, l2]
> and get
>         Out[1] = {{A,B}, {C,D,E}, {F,G,H,I}, {J}}
>
> I've racked my brains, but have been unable to think of an elegant
> solution, but instead managed the following Fortran-like function:
>
> MyPartition[list1_, list2_] :=
> Module[{ans,l},
>         ans={};
>         l = list1;
>         Do      [
>                 AppendTo[ans, Take[l, list2[[i]]]];
>                 l = Drop[l, list2[[i]]],
>                 {i, Length[list2]}
>                 ];
>         ans
>         ]
>
> Someone put me out of my misery!  How can I code this in a more efficient
> manner?!
>
> Paul E Howland                                  Tel. +44 (0)1684 895767
> Long Range Ground Radar Sensors                 Fax. +44 (0)1684 896315
> LSC2 Division                                 Email. PEHOWLAND at DRA.HMG.GB
> Defence Research Agency
> St Andrews Road
> Malvern
> Worcestershire, WR14 3PS, UK
> =========================================================================
>
>

```

• Prev by Date: Re: Using Hold, ReleaseHold, and Unevaluated
• Next by Date: Re: There must be a better way!
• Previous by thread: There must be a better way!
• Next by thread: Re: There must be a better way!