It seems I hadn’t fully understood the fact that the graph consisted of one and only one cycle. Thus my first solution is a little overkill for this problem, as it should work on any graph. Here’s another shorter one, probably similar to yours:
cycle=: >@{:@(sol&>/@]^:(<:@#@[) (}. ; {.)) sol=: 13 : '(x{~<<<i);y,t-.~x{~i=.1 i.~x e."1~t=.{:y' cycle G 1 2 4 5 6 7 8 9 10 11 12 13 24 25 26 23 16 15 14 22 21 20 19 18 17 3 1 Now that I take a better look, they’re almost identical. All the best, Louis > On 25 Aug 2016, at 20:19, R.E. Boss <r.e.b...@outlook.com> wrote: > > You should swap the first two numbers of your solution, since 2 is not > adjacent to 4. > > It's more or less what I came up with, be it explicit. > ;{.(3 :('''x y''=.y'; '(y-.t{y);~ x,({:x)-.~y{~t=.1 i.~ y e.~"1 > {:x'))^:(#@>@{:) ({.;}.) edges > 1 2 4 5 6 7 8 9 10 11 12 13 24 25 26 23 16 15 14 22 21 20 19 18 17 3 1 > > > R.E. Boss > > >> -----Original Message----- >> From: Programming [mailto:programming-boun...@forums.jsoftware.com] >> On Behalf Of Raul Miller >> Sent: donderdag 25 augustus 2016 15:36 >> To: Programming forum <programm...@jsoftware.com> >> Subject: Re: [Jprogramming] determine the cycle >> >> Oops, I represented the vertices incorrectly ({."1 would only be valid if the >> edges were directed). >> >> Here's a fix: >> >> ~., ((] , -. {~ {.@I.@(-. +./"1@e. {:@]))^:(<:@#@[) ,:@{.) edges >> 1 2 3 17 18 19 20 21 22 14 15 16 23 26 25 24 13 12 11 10 9 8 7 6 5 4 >> >> This is the same core implementation, but this should show the actual >> vertices being traversed in the order they are encountered. >> >> Thanks, >> >> -- >> Raul >> >> >> On Thu, Aug 25, 2016 at 8:36 AM, 'Jon Hough' via Programming >> <programm...@jsoftware.com> wrote: >>> Raul, >>> >>> your solution seems to miss out some vertices and duplicates others. >>> >>> >>> -------------------------------------------- >>> On Thu, 8/25/16, Raul Miller <rauldmil...@gmail.com> wrote: >>> >>> Subject: Re: [Jprogramming] determine the cycle >>> To: "Programming forum" <programm...@jsoftware.com> >>> Date: Thursday, August 25, 2016, 9:07 PM >>> >>> Best I can come up with >>> is >>> >>> {."1 >>> ((] , -. {~ {.@I.@(-. +./"1@e. {:@]))^:(<:@#@[) ,:@{.) >>> edges >>> 1 3 17 18 18 20 20 21 22 14 15 16 23 >>> 26 25 13 12 11 11 10 9 7 6 5 4 2 >>> >>> Change {.@I. to {:@I. if you want things >>> in the other order. >>> >>> -- >>> Raul >>> ---------------------------------------------------------------------- >>> For information about J forums see >> http://www.jsoftware.com/forums.htm >>> ---------------------------------------------------------------------- >>> For information about J forums see >> http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm