Re: Pattern Matching
- To: mathgroup at smc.vnet.net
- Subject: [mg58239] Re: Pattern Matching
- From: dh <dh at metrohm.ch>
- Date: Fri, 24 Jun 2005 02:49:58 -0400 (EDT)
- References: <d9e0bc$g6i$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Jeff, we can do your desired selection by a condition with a side effect. We need a auxillary variable, say tt that we set to your starting threshold, e.g. tt= t[[1]]-2; we now construct a function that test the condition and, if True, decrements tt by two. Remember that boolean expressions connected by && are evaluated left to right until one expression fails. Therefore, (#<=tt)&&(tt=tt-2;True) & will test and decrement when needed. This function used in a Select statement: Select[t,(#<=tt)&&(tt=tt-2;True) &] will do the trick. sincerely, Daniel Jeff wrote: > 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 >