Re: patterns
- To: mathgroup at smc.vnet.net
- Subject: [mg31188] Re: patterns
- From: "Alan Mason" <swt at austin.rr.com>
- Date: Tue, 16 Oct 2001 01:19:16 -0400 (EDT)
- References: <9q66qu$rs4$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hello Yannis. The following code snippet should get you started. In[79]:= L = {1.`,1.1`,1.2`,1.1`,1.4`,1.5`,1.6`,1.2`,1.3`,1.7`}; In[80]:= cond = #>1.1; pickPair[L_List, cond_] := Module[{a, b,c, L2, pos, pos2}, L2 = Union[Select[L, cond&]]; Print["L2 is ", L2]; pos = Sort[Flatten[Position[L, #]&/@ L2]]; Print["pos is ", pos]; pos2[{}] := {}; pos2[{a_}] := {}; pos2[{a_, b_}] := If[b-a\[Equal]1, {a, b}, {}]; pos2[{a_, b_, c___}] := Flatten[Append[pos2[{a, b}], pos2[{b,c}]]]; pos = Union[pos2[pos]]; Print["pos is ", pos]; If[Length[pos]<2, Return[{}]]; Return[ Take[ L, {pos[[1]], pos[[2]]}]]; ] In[82]:= pickPair[L, cond] L2 is \[InvisibleSpace]{1.2,1.3,1.4,1.5,1.6,1.7} pos is \[InvisibleSpace]{3,5,6,7,8,9,10} pos is \[InvisibleSpace]{5,6,7,8,9,10} Out[82]= {1.4,1.5} Modify to taste. Alan <Yannis.Paraskevopoulos at ubsw.com> wrote in message news:9q66qu$rs4$1 at smc.vnet.net... > Hi, > > I have built the following function for selecting consecutive elements > of a list that do satisfy a particular condition. Here it is: > > > f[x_, matrix_] := Module[{t, selector}, > (* Flatten and group number in pairs *) > t = Partition[Flatten[matrix], 2]; > (* Selector : returns true if all in list > x *) > selector[xx_, list_] := Apply[And, Map[(# > xx) &, list]]; > (* select *) > Select[t, selector[x, #] &]] > > > t = Table[Table[Random[], {4}], {12}]; > > f[0.01,t] > > {{0.301739,0.837578},{0.710472,0.373638},{0.950287,0.828919},{0.327263, > 0.861149},{0.734775,0.491342},{0.623224,0.365866},{0.962033, > 0.549466},{0.0602337,0.0313664},{0.293098,0.277972},{0.0841844, > 0.550993},{0.0538037,0.157458},{0.990937,0.167571},{0.752064, > 0.31988},{0.280465,0.793933},{0.801777,0.490962},{0.953202, > 0.932784},{0.0670017,0.99962},{0.329978,0.566918},{0.104969, > 0.450153},{0.269745,0.535552},{0.811871,0.172181},{0.18556, > 0.984558},{0.758067,0.0147228},{0.194623,0.816987}} > > seems to work. My question is how one could modify the function so : > 1) we pick the first set of consecutive numbers that satisfy the > condition and 2) from any partition of 10 you check the first 5 who > satisfy the condition (again continuous) and then go to the next row > of the initial matrix. > > Do you know any good reference with lots of examples for conditions and > patterns with lists and matrices? > > > Thank you very much in advance. > > yannis > > > > > > Visit our website at http://www.ubswarburg.com > > This message contains confidential information and is intended only > for the individual named. If you are not the named addressee you > should not disseminate, distribute or copy this e-mail. Please > notify the sender immediately by e-mail if you have received this > e-mail by mistake and delete this e-mail from your system. > > E-mail transmission cannot be guaranteed to be secure or error-free > as information could be intercepted, corrupted, lost, destroyed, > arrive late or incomplete, or contain viruses. The sender therefore > does not accept liability for any errors or omissions in the contents > of this message which arise as a result of e-mail transmission. If > verification is required please request a hard-copy version. This > message is provided for informational purposes and should not be > construed as a solicitation or offer to buy or sell any securities or > related financial instruments. > >