Sorry, the second verb should be

getEdges =: 3 : 0
if. 1 > # y do.

else.
h =. 1{.y
t =. 1}.y
((h&,)"0 t ), getEdges t
end.
)

(changed getNodes to getEdges)


--------------------------------------------
On Sat, 9/26/15, 'Jon Hough' via Programming <programm...@jsoftware.com> wrote:

 Subject: [Jprogramming] Generate Complete Graphs
 To: "Programming Forum" <programm...@jsoftware.com>
 Date: Saturday, September 26, 2015, 10:16 PM
 
 I have a couple of verbs to represent
 a complete (undirected) graph as a list of edges. Clearly
 there are "N choose 2" edges that need to be generated. This
 is my code
 
 complete =: 3 : 0
 nodes =. i. y
 getEdges nodes
 )
 
 getEdges =: 3 : 0
 if. 1 > # y do.
 
 else.
 h =. 1{.y
 t =. 1}.y
 ((h&,)"0 t ), getNodes t
 end.
 ) 
 
 
 e.g. I can get the 10 edges of the graph K5 by doing
 
 complete 5
 
 My above code is ugly however. To be specific, it seems too
 imperative for J,  and the first part of the if. do. in
 getEdges doesn't return anything which seems ugly.
 
 I would like to know if there is a more J-like, terse way to
 do this. 
 
 Regards,
 Jon
 ----------------------------------------------------------------------
 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