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

Reply via email to