Re: rule based program for "Deleting repeated members of a list."
- To: mathgroup at smc.vnet.net
- Subject: [mg82035] Re: rule based program for "Deleting repeated members of a list."
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Wed, 10 Oct 2007 04:23:58 -0400 (EDT)
- Organization: The Open University, Milton Keynes, UK
- References: <fe7j44$qga$1@smc.vnet.net> <fea9ju$k4g$1@smc.vnet.net>
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