MathGroup Archive 1995

[Date Index] [Thread Index] [Author Index]

Search the Archive

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]},
MapThread[Complement[#1,#2]&,{q,RotateLeft[q]}]],-1]

{{A, B}, {C, D, E}, {I, F, G, H}, {J, K, L}}
 ----------
 > From: mathgroup-adm
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!