Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

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

Search the Archive

RE: Sort into chain

  • To: mathgroup at smc.vnet.net
  • Subject: [mg45642] RE: [mg45605] Sort into chain
  • From: "Wolf, Hartmut" <Hartmut.Wolf at t-systems.com>
  • Date: Fri, 16 Jan 2004 19:57:53 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com


>-----Original Message-----
>From: Goyder Dr HGD [mailto:h.g.d.goyder at cranfield.ac.uk]
To: mathgroup at smc.vnet.net
>Sent: Friday, January 16, 2004 12:05 PM
>To: mathgroup at smc.vnet.net
>Subject: [mg45642] [mg45605] Sort into chain
>
>
>Dear Mathgroup,
>
>How do I sort a list of pairs, for example,
>
>a = {{3, 1}, {2, 6}, {7, 3}, {8, 7}, {10, 8}, {6, 11}, 
>{12, 10}, {11, 14}, {15, 12}, {14, 18}, {19, 15}, 
>{18, 20}, {20, 19}, {1, 2}};
>
>
>Into a list where the second entry in each pair is the same as 
>the first
>entry in the next pair. Thus the effect of the sort will give
>
>{{18, 20}, {20, 19}, {19, 15}, {15, 12}, 
>{12, 10}, {10, 8}, {8, 7}, {7, 3}, {3, 1}, 
>{1, 2}, {2, 6}, {6, 11}, {11, 14}, {14, 18}}
>
>The first pair is not important because the pairs form a 
>circular chain.
>
>I have tried 
>
>Sort[a, (#1[[2]] == #2[[1]]) &]
>
>but the answer is 
>
>{{1, 2}, {20, 19}, {14, 18}, {18, 20}, {19, 15},
>{15, 12}, {6, 11}, {11, 14}, {12, 10}, {10, 8}, 
>{8, 7}, {7, 3}, {2, 6}, {3, 1}}
>
>which has a few correct entries but is not finished. I wondered if the
>difficulty was due to the circular nature of the chain but if 
>you break the
>chain by dropping one pair it still does not work.
>
>Thanks for any assistance
>
>Hugh Goyder
>
>-- 
>This message has been scanned for viruses and
>dangerous content by the Cranfield MailScanner, and is
>believed to be clean.
>

Using the porperties your data obviously have (from your example):

In[14]:= start = -3;

In[15]:= Block[{s},
  Scan[(s[#[[1]]] = #) &, a];
  NestList[s[#[[-1]]] &, a[[start]], Length[a] - 1]]
Out[15]=
{{18, 20}, {20, 19}, {19, 15}, {15, 12}, {12, 10}, {10, 8}, {8, 7},
 {7, 3}, {3, 1}, {1, 2}, {2, 6}, {6, 11}, {11, 14}, {14, 18}}

Of course you may start from where you want.

--
Hartmut Wolf


  • Prev by Date: RE: Wolfram Functions Site
  • Next by Date: Re: Re: Re: how to delete duplicate items in the same list
  • Previous by thread: Re: Sort into chain
  • Next by thread: Re: Sort into chain