Re: Re: Problem with matching.
- To: mathgroup at smc.vnet.net
- Subject: [mg53954] Re: [mg53935] Re: Problem with matching.
- From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
- Date: Sat, 5 Feb 2005 03:15:13 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
>-----Original Message----- >From: p-valko at tamu.edu [mailto:p-valko at tamu.edu] To: mathgroup at smc.vnet.net >Sent: Friday, February 04, 2005 10:12 AM >Subject: [mg53954] [mg53935] Re: Problem with matching. > >Josef, > >Because the numbers 1 and 2 are not the same, so they cannot >be matched with the same a. > >F[{x, 2, c}]F[{x, 1, f}] /. F[{___, a_, ___}]F[{___, b_, ___-}] :> yes > > >will work fine. > >Regards >Peter > > This is what meets your eye, but not what happens: In[105]:= F[{x, 2, c}]F[{x, 1, f}] /. HoldPattern[F[{___, a_, ___}]F[{___, a_, ___}]] :> "yes, and same instance is " <> ToString[a] Out[105]= "yes, and same instance is x" In fact this matches too: In[108]:= F[{x, 2, c}]F[{1, f, x}] /. HoldPattern[F[{___, a_, ___}]F[{___, a_, ___}]] :> yes Out[108]= yes Your proposal in fact does not what desired: In[103]:= F[{1, 2, 3}]F[{4, 5, 6}] /. F[{___, a_, ___}]F[{___, b_, ___}] :> yes Out[103]= yes What was desired? I copy back (part of) the original post: "I'm expecting 'yes' to be returned if any of the list arguments to F[] contain the same value." (Add: and of course not "yes" if not). Now, we have seen, HoldPattern even is not enough, if matching arguments have to be at the same position. In[5]:= F[{x, 2, c}]F[{1, f, x}] /. F[{p___, a_, ___}]F[{q___, a_, ___}] /; Length[{p}] === Length[{q}] :> yes Out[5]= F[{1, f, x}] F[{x, 2, c}] In[6]:= F[{x, 2, c}]F[{x, 1, f}] /. F[{p___, a_, ___}]F[{q___, a_, ___}] /; Length[{p}] === Length[{q}] :> yes Out[6]= yes In[7]:= F[{2, c, x}]F[{1, f, x}] /. F[{p___, a_, ___}]F[{q___, a_, ___}] /; Length[{p}] === Length[{q}] :> yes Out[7]= yes -- Hartmut Wolf