RE: Re: question in mathematica
- To: mathgroup at smc.vnet.net
- Subject: [mg80148] RE: [mg80143] Re: question in mathematica
- From: "Harvey P. Dale" <hpd1 at nyu.edu>
- Date: Tue, 14 Aug 2007 06:49:50 -0400 (EDT)
- References: <fa11b990e477.46baf2d3@bgu.ac.il> <200708130842.EAA27991@smc.vnet.net>
- Reply-to: "Harvey P. Dale" <hpd1 at nyu.edu>
Here's another way: maxlst[l_List] := Module[{l2 = l, i, len}, i = 2; len = Length[l2]; While[i <= len, l2[[i]] = Max[l2[[i]], l2[[i-1]]]; i++]; Transpose[Tally[l2]][[1]]] ls={9,2,10,3,14,9} maxlst[ls] {9,10,14} Best, Harvey Harvey P. Dale University Professor of Philanthropy and the Law Director, National Center on Philanthropy and the Law New York University School of Law Room 206A 110 West 3rd Street New York, N.Y. 10012-1074 tel: 212-998-6161 fax: 212-995-3149 ________________________________ From: m.r at inbox.ru [mailto:m.r at inbox.ru] Sent: Monday, August 13, 2007 4:42 AM To: mathgroup at smc.vnet.net Subject: [mg80148] [mg80143] Re: question in mathematica On Aug 11, 1:43 am, Andrzej Kozlowski <a... at mimuw.edu.pl> wrote: > First, please send such question to the MathGroup, > > mathgr... at smc.vnet.net > > not me personally. (I really have desire, tiem or ability to replace > the enitre MathGroup.) > So I have decided to post this question to the MathGroup in case > someone else finds it interesting. > > Also, there is something about this question and the earlier you sent > me that make sme suspicious. What do you say "you need to use > recursion and pattern matching, Select and Join"? This sounds to me > like some sort of test problem so I have decided to answer it but > without using any of these functions (although it may not be the > simplest way to do this). So here is my answer: > > ls = {9, 2, 10, 3, 14, 9}; > > Reverse[Last[Last[Reap[NestWhile[With[{a = First[Ordering[#, -1]]}, > Sow[#[[a]]]; Take[#, a - 1]] &,ls,Length[#] > 0 &]]]]] > > {9, 10, 14} > > On 10 Aug 2007, at 10:12, Ivan Egorov wrote: > > > I have one more question. > > > Write a function maxima[lis_List] which, given a list of numbers, > > produces a list of those > > > numbers greater than all those that precede them. For example > > > maxima[{ 9, 2, 10, 3, 14, 9}] returns { 9, 10, 14}. You need to use > > recursion, pattern matching, > > > Select and Join. > > > =E2=80=8E I'll make it easier for myself and use pattern matching: In[1]:= ReplaceList[{9, 2, 10, 3, 14, 9}, {s___, x_, ___} /; Max[s] < x :> x] Out[1]= {9, 10, 14} Maxim Rytin m.r at inbox.ru
- Follow-Ups:
- Re: RE: Re: question in mathematica
- From: Carl Woll <carlw@wolfram.com>
- Re: RE: Re: question in mathematica
- References:
- Re: question in mathematica
- From: m.r@inbox.ru
- Re: question in mathematica