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