MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: Underline string in colour
  • Next by Date: Re: Import of EPS files
  • Previous by thread: Re: rule based program for "Deleting repeated members of a list."
  • Next by thread: Re: rule based program for "Deleting repeated members of a list."