Re: Re: Super-Increasing List
- To: mathgroup at smc.vnet.net
- Subject: [mg40501] Re: [mg40459] Re: [mg40438] Super-Increasing List
- From: Dr Bob <majort at cox-internet.com>
- Date: Tue, 8 Apr 2003 03:05:14 -0400 (EDT)
- References: <8EB1C3634596D6118952006008F711CD5BCD5B@debis.com>
- Reply-to: majort at cox-internet.com
- Sender: owner-wri-mathgroup at wolfram.com
Thanks for pointing out that the original requirement was a strictly increasing series and OrderedQ[list] doesn't check for that. However, we DO have to check whether the series is increasing, as the following example shows: ClearAll[test, sum] sum[1] = test[1]; sum[n_Integer?Positive] := sum[n - 1] + test[n] test[1] = -3; test[2] = -2; test[n_Integer?Positive] := 1 + sum[n - 1] list = test /@ Range[5] {-3, -2, -4, -8, -16} treat[t_List] := Catch[Fold[If[And @@ Thread[#1 < #2], #2 + #1{1, 0}, Throw[False]] &, {1, 1}First@t, Rest@t]; True] wolf[t_List] := And @@ Thread[Drop[FoldList[ Plus, First[t], Rest[t]], -1] < Rest[t]] treat@list wolf@list False True Bobby On Mon, 7 Apr 2003 11:09:05 +0200, Wolf, Hartmut <Hartmut.Wolf@t- systems.com> wrote: > This is a bit obfuscated,... > > Catch[Fold[If[#1 < #2, #1 + #2, Throw[False]] &, First[t], Rest[t]]; > True] > > ...will do. > > > Bob Hanlon's solution assumes all list elements to be positive; however, > this might be accounted for: > > And @@ Thread[Drop[FoldList[Plus, First[t], Rest[t]], -1] < Rest[t]] > > > Bill Rowe made the same assumption and additionally checked for the > sequence > to be increasing (which is not neccessary), furthermore OrderedQ is not > quite appropiate (apart from being less efficient), as > > In[39]:= OrderedQ[{1, 1}] > Out[39]= True > > > -- > Hartmut Wolf > > > > >> -----Original Message----- >> From: Dr Bob [mailto:majort at cox-internet.com] To: mathgroup at smc.vnet.net >> Sent: Sunday, April 06, 2003 10:35 AM >> To: mathgroup at smc.vnet.net >> Subject: [mg40501] [mg40459] Re: [mg40438] Super-Increasing List >> >> >> superIncreasing[t_List] := >> Catch[ >> Fold[If[And @@ Thread[#1 < #2], #2 + #1{1, 0}, Throw[False]] &, >> {1, 1}First@t, Rest@t]; True] >> >> Bobby >> >> On Sat, 5 Apr 2003 04:00:35 -0500 (EST), flip <flip_alpha at safebunch.com> >> wrote: >> >>> Hello, >>> >>> does a command or module exist which can test a list of values and >>> determine >>> if it is a super-increasing list? >>> >>> A super-increasing list satifies the conditions: >>> >>> a. the list is in increasing order >>> b. each element of the list is greater than the sum of it's previous >>> elements >>> >>> Example: >>> >>> list = {2, 3, 7, 15, 31} >>> >>> So check: >>> >>> a. It is in increasing order and >>> b. 3 > 2, 7 > 3+ 2, 15 > 7 + 3 + 2 and 31 > 15 + 7 + 3 + 2, >>> >>> hence the list is super-increasing. >>> >>> Thanks for any inputs, Flip >>> >>> To email me, remove "_alpha". >>> >>> >>> >>> >> >> >> >> -- majort at cox-internet.com >> Bobby R. Treat >> >> > > -- majort at cox-internet.com Bobby R. Treat