Re:Re: Set of strings reducing problem (Again!)

*To*: mathgroup at smc.vnet.net*Subject*: [mg60404] Re:[mg60348] Re: Set of strings reducing problem (Again!)*From*: "Edson Ferreira" <edsferr at uol.com.br>*Date*: Thu, 15 Sep 2005 05:16:24 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Valeri, I have tested both your modified code and the original one, and I saw no difference in performance as I wished to see. Making Dispatch table order independent made no effect. The results, as expected, are the same! Test1 Your code: 117,939 seconds Original code: 116,928 seconds Test 2 Your code: 29,542 seconds Original code: 29,582 seconds Does any math guru know how to improve the performance of this code? Thanks!!!!!! > Edson, > This is what I modified : > > -1- Make Dispatch table order independant > -2- Insert z___List between p and q for not neighbor cases > > > In[1]:= > Unprotect[D]; > U={"2","X"}; > M={"1","2"}; > D={"1","X"}; > T={"1","2","X"}; > L=Flatten[Outer[StringJoin,T,T,T,D]]; > L = Select[L, Count[Characters[#], "1"] > 1 &]; > cl = Characters /@ L; > r = Dispatch[{"1" + "X" -> "D", > "1" + "2" -> "M", > "1" + "U" -> "T", > "X" + "2" -> "U", > "X" + "M" -> "T", > "2" + "D" -> "T", > "X" + "1" -> "D", > "2" + "1" -> "M", > "U" + "1" -> "T", > "2" + "X" -> "U", > "M" + "X" -> "T", > "D" + "2" -> "T"}]; > ncl = StringJoin @@@ ( > cl //. {x___List, > {a___, p_String, c___}, > z___List, > {a___, q_String, c___}, > y___List} :> > {x, {a, p + q /. r, c}, z, > y} /; StringQ[p + q /. > r]) > Out[10]= > {11TD,1U1D,1UU1,U11D,U1U1,UU11} > > Seems to work... > > v.a. > >