MathGroup Archive 2002

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

Search the Archive

RE: perhaps? RE: Finding pattern Matched series

  • To: mathgroup at smc.vnet.net
  • Subject: [mg33086] RE: perhaps? RE: [mg33051] Finding pattern Matched series
  • From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
  • Date: Fri, 1 Mar 2002 06:51:54 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

> -----Original Message-----
> From:	J C [SMTP:jabidof at yahoo.fr]
To: mathgroup at smc.vnet.net
> Sent:	Wednesday, February 27, 2002 6:02 PM
> To:	Wolf, Hartmut
> Subject:	Re: perhaps? RE: [mg33051] Finding pattern Matched series
> 
> 
--snipped--

> Sorry for giving you some guesswork. Here is the
> answers I am looking for:
> 
> Given:
> 
> {{2, 1}, {2, 3}, {3, 2}, {3, 5}, {4, 2}, {4, 5}, {5,4}, {6, 4}}
> 
> get:
> 
> {{{2, 3}, {3, 2}}, {{4, 5}, {5, 4}}, {{2, 3}, {3, 5},{5, 4}, {4, 2}}} 
> 
> in other words, the list of all possible oriented
> loops formed by the given list of coordinates.
> 
[Hartmut Wolf]  

-- loops, aha, so you are working on graphs in general, or applied, e.g. for
polytopes.

If you want _all_ subsequences, i.e. for all gap lengths -- as I called it
-- then the methods I gave you are not appropriate.

Also another question arises: whether your input list should be treated as
cyclic.
Assumed not so, if I bring your "in other words" to code

In[1]:=
t={{2,1},{2,3},{3,2},{3,5},{4,2},{4,5},{5,4},{6,4}};

In[2]:=
res=ReplaceList[
    t,{___,{x_,a_},bb___,{c_,x_},___}\[RuleDelayed]{{x,a},bb,{c,x}}]
Out[2]=
{{{2,1},{2,3},{3,2}},
 {{2,3},{3,2}},
 {{2,1},{2,3},{3,2},{3,5},{4,2}},
 {{2,3},{3,2},{3,5},{4,2}},
 {{4,2},{4,5},{5,4}},
 {{4,5},{5,4}},
 {{4,2},{4,5},{5,4},{6,4}},
 {{4,5},{5,4},{6,4}}}

This is clearly different from your answer:

In[3]:=
your\[UnderParenthesis]answer=
  {{{2,3},{3,2}},
   {{4,5},{5,4}},
   {{2,3},{3,5},{5,4},{4,2}}};

In[4]:=
your\[UnderParenthesis]answer \[Equal] res
Out[4]=
False

In[5]:=
Intersection[res,your\[UnderParenthesis]answer]
Out[5]=
{{{2,3},{3,2}},{{4,5},{5,4}}}


Especially I have no clue on what makes {{2,3},{3,5},{5,4},{4,2}} be part of
it?

--
Hartmut


_____________
P.S.:

Just getting another idea:

In[10]:= {t1,t2}=Transpose[t]
Out[10]=
{{2,2,3,3,4,4,5,6},{1,3,2,5,2,5,4,4}}

In[26]:=
ls=Transpose/@NestList[{First[#],RotateLeft[Last[#]]}&,{t1,t2},Length[t]-1]

In[30]:= p=Position[ls,{x_,x_}]
Out[30]=
{{2,2},{2,6},{3,1},{3,5},{3,6},{4,2},{4,5},{5,1},{6,7},{7,4},{8,3},{8,7}}

In[38]:=
r2=Check[Take[t,{#2,#2+#1-1}],Unevaluated[Sequence[]]]& @@@ p

Out[38]=
{{{2,3},{3,2}},
 {{4,5},{5,4}},
 {{2,1},{2,3},{3,2}},
 {{4,2},{4,5},{5,4}},
 {{4,5},{5,4},{6,4}},
 {{2,3},{3,2},{3,5},{4,2}},
 {{4,2},{4,5},{5,4},{6,4}},
 {{2,1},{2,3},{3,2},{3,5},{4,2}}}

In[40]:= Sort[res]\[Equal]Sort[r2]
Out[40]= True

You might not like the accompanied error messages. Now, observing that the
paired rotated list ls is equivalent to

In[22]:=
lc=ListCorrelate[t1,t2,{1,1},t2,List,List]

In[27]:= lc\[Equal]ls
Out[27]= True

So we can do this:

In[41]:= lc=ListCorrelate[t1,t2,{1,1},{},List,List]

In[42]:= p2=Position[lc,{x_,x_}]

In[44]:= Take[t,{#2,#2+#1-1}]& @@@ p2
Out[44]=
{{{2,3},{3,2}},
 {{4,5},{5,4}},
 {{2,1},{2,3},{3,2}},
 {{4,2},{4,5},{5,4}},
 {{4,5},{5,4},{6,4}},
 {{2,3},{3,2},{3,5},{4,2}},
 {{4,2},{4,5},{5,4},{6,4}},
 {{2,1},{2,3},{3,2},{3,5},{4,2}}}



  • Prev by Date: Re: Notebooks and CVS: how to automatically strip output?
  • Next by Date: Re: Solve (on Mathematica 4.1 Windows XP)?
  • Previous by thread: Re: Notebooks and CVS: how to automatically strip output?
  • Next by thread: perhaps? RE: Finding pattern Matched series