Re: Pattern Matching

*To*: mathgroup at smc.vnet.net*Subject*: [mg58243] Re: Pattern Matching*From*: "Carl K. Woll" <carlw at u.washington.edu>*Date*: Fri, 24 Jun 2005 02:50:04 -0400 (EDT)*Organization*: University of Washington*References*: <d9e0bc$g6i$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

"Jeff" <jmcolon at gmail.com> wrote in message news:d9e0bc$g6i$1 at smc.vnet.net... > Given a list of numbers, t = {0, -1, 0, -1, -2, -3, -4,-3,-4,-5}, I > would like to extract those numbers that are less than or equal to the > starting value by, for example, at least 2, but once the first (and > each subsequent) match is found, I would the starting value to drop by > 2. So for the list t, the output would be {-2, -4}. > > I can use Cases or map using If[ ] on the list to extract those > elements that are less than or equal to -2, but I'm having difficutly > in figuring out how to change the starting value to be applied to > subsequent elements of the list. > > Given my example, I could just extract all the multiples of 2 in the > list, but I would like the starting value to change by a fixed > percentage or combination of fixed number and percentage. > > Thanks, > Jeff > One possibility is to use Reap and Sow: In[10]:= s=First[t]; Reap[If[#\[LessEqual]s-2,Sow[#];s=s-2]&/@t][[2,1]] Out[11]= {-2,-4} Carl Woll Wolfram Research