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