Re: Pattern matching

• To: mathgroup at smc.vnet.net
• Subject: [mg4894] Re: Pattern matching
• From: Clemens Frey <Clemens.Frey at uni-bayreuth.de>
• Date: Fri, 4 Oct 1996 00:17:34 -0400
• Organization: uni-bayreuth.de
• Sender: owner-wri-mathgroup at wolfram.com

```Reinhard Simonovits wrote:
>
> Dear Mathgroupers,
> In  the list of two dim vectors  vecs = {   { {-1,1}, {2,2} },   {3,4}  }   in a rectangular coord systems,  the last
> vector is a radius vector.
> To plot them I have to add {0,0}, so that plotvecs = {    { {-1,1}, {2,2} },   { {0,0}, {3,4} }   } fulfills the task.
>
> This can be done with
> plotvecs = Apply[    If[ NumberQ[#1],     { {0,0}, {##} },      {#1,#2} ]&,   vecs,  {1}  ]
>
> I wonder how could this be done by pattern matching.
>
> plotvecs =  vecs /. {a_,b_} -> { {0,0},{a,b} } /; ???
>

Dear Reinhard,

just try the following

vecs = {{{-1,1},{2,2}}, {3,4}};
plotvecs = vecs /. {l1_List,l2_List} -> {l1,{{0,0},l2}};

Then the last vector of your list (the radius) will be transformed
as you intended. Use l1__List (BlankSequence) or l1___List
(BlankNullSequence) if there could be one or more vectors at the
beginning of the list or none or more, respectively.

Be careful with the conditional pattern you tried.
First of all, a thing like -> ... /; is obsolete. Use :> ... /; instead.
Second, it's dangerous as the {-1,1} in the first vector would always
match
your condition for the radius vector {3,4}, just because these pairs are
of the same shape...

Last, consider the use of the function ReplacePart.

I hope these hints help

Greetings
Clemens Frey
(-: Clemens.Frey at uni-bayreuth.de :-)

==== [MESSAGE SEPARATOR] ====

```

• Prev by Date: Re: programming competition
• Next by Date: mathematica on linux
• Previous by thread: Re: Conjugate
• Next by thread: mathematica on linux