Re: rule based program for "Deleting repeated members of a list."

*To*: mathgroup at smc.vnet.net*Subject*: [mg82073] Re: rule based program for "Deleting repeated members of a list."*From*: Norbert Marxer <marxer at mec.li>*Date*: Thu, 11 Oct 2007 00:21:29 -0400 (EDT)*References*: <fe7j44$qga$1@smc.vnet.net><fea9ju$k4g$1@smc.vnet.net>

On 10 Okt., 10:31, Jean-Marc Gulliet <jeanmarc.gull... at gmail.com> wrote: > mumat wrote: > > On Oct 6, 5:05 am, mumat <csar... at gmail.com> wrote: > >> Hi, > > >> I have a list s={a,b,c,c,d,e,e,f,g,g,g,h,a,b}; > > >> I need to write a program so that it reads the list and ignors > >> repeated elements; so it outputs the following: > > >> RepeatRemover[s]={a,b,c,d,e,f,g,h,a,b}; > > >> I am looking for a rule-based program to do this! > > >> Any help would be greatly appreciated. > > >> C.S. > > > Thanks so much. > > > Unrepeat[lis_List]:=lis//.{a___,b_,d_,e___}:>{a,b,e}/;b==d; > > I was wandering why you used b and d as pattern name with a condition on > them rather than b and c, but I realized that when using c as pattern > name in place of d the replacement fails. > > In[1]:= s = {a, b, c, c, d, e, e, f, g, g, g, h, a, b}; > s //. {a___, b_, c_, d___} :> {a, b, c} /; b == c > s //. {a___, b_, d_, e___} :> {a, b, e} /; b == d > > Out[2]= {a, b, c, c} > > Out[3]= {a, b, c, d, e, f, g, h, a, b} > > Does anyone know why? > > Regards, > -- > Jean-Marc- Zitierten Text ausblenden - > > - Zitierten Text anzeigen - Hello Yes, I know why. The second line in your code s //. {a___, b_, c_, d___} :> {a, b, c} /; b == c is wrong. The third argument in the list should be d (not c): e.g. s //. {a___, b_, c_, d___} :> {a, b, d} /; b == c Best Regards Norbert Marxer