Got this:

        cl=: [: {:"1 ] ([: ; lp&.>/"1)@]^:(*./@:~: {:@>@{:"1)^:_ lp
        lp=: [ ((-. (,: |.)@(_2&{.)) ; ])"2 1 ] ,"1 0 {:"1@[ {~ {:@] I.@:= 
{."1@[

Not particularly elegant or concise, but it works (G -: edges):

           ((, |."1) G) cl 1
        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
        1 3 17 18 19 20 21 22 14 15 16 23 26 25 24 13 12 11 10  9  8  7  6  5  
4 2 1

It will find all shortest cycles in the graph x, starting at y. The 
modification of G is to make it undirected; cl works on
directed graphs as well (I think!).
I believe this modification will make it less efficient, but it will find _all_ 
cycles in the graph:

        cls=: [: {:"1 ] ([: ; <@(lp&>/@]`(,:@])@.(= {:@>@{:))"1)^:_ lp

However I haven’t tested it on another graph yet, so don’t take my word for it.
Nice challenge, thank you.

Cheers,
Louis

> On 25 Aug 2016, at 12:13, R.E. Boss <[email protected]> wrote:
> 
> 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

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to