 
 
 
 
 
 
Re: rules and lists
- To: mathgroup at smc.vnet.net
- Subject: [mg54247] Re: rules and lists
- From: David Bailey <dave at Remove_Thisdbailey.co.uk>
- Date: Mon, 14 Feb 2005 21:50:40 -0500 (EST)
- References: <cup65m$e04$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Erich Neuwirth wrote:
> I would like to replace sublists of a list to be replaced by another 
> list, such that for example the rule
> {1,2}->{1,2,3}
> wout tranform
> {1,2,3,3,1,2} into
> {1,2,3,3,3,1,2,3}
> Simply gibbin the transformation rule in the form
> {x___,1,2,y___}->{x,1,2,3,y}
> does not work.
> What is the idiom to do what I want?
> 
This is slightly more subtle than it looks. The point is that /. will 
match your whole list with the pattern you have used - so it will only 
find one instance of your sublist. However, if you use //. you will get 
an infinite loop. The easiest way is to use a transformation that 
replaces each sublist with symbols - so you can use //. and match all 
the sublists, then replace the symbols with their proper values.
{1,2,3,3,1,2}//.{x___,1,2,y___}->{x,a1,a2,a3,y} /. {a1->1,a2->2,
     a3->3}
{1, 2, 3, 1, 2, 3, 2}
David Bailey
dbaileyconsultancy.co.uk

