Going from tacit to explicit can be tricky. This is an example of a monadic fork.
A=: ,</~i.5 f=: # i.@# f A 1 2 3 4 7 8 9 13 14 19 g=: 13 :'y#i.#y' g A 1 2 3 4 7 8 9 13 14 19 f # i.@# g ] # [: i. # 5!:4 <'f' -- # --+ -- i. L- @ -+- # 5!:4 <'g' -- ] +- # --+ -- [: L---+- i. L- # Linda -----Original Message----- From: programming-boun...@forums.jsoftware.com [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of 'Jon Hough' via Programming Sent: Saturday, September 26, 2015 11:06 PM To: programm...@jsoftware.com Subject: Re: [Jprogramming] Generate Complete Graphs These are all great, thanks. By the way, off-topic, in dissect it might be a good idea to use Courier or a typeface with serifs. It is very easy to misread I. as |., at least for me. -------------------------------------------- On Sun, 9/27/15, Henry Rich < <mailto:henryhr...@gmail.com> henryhr...@gmail.com> wrote: Subject: Re: [Jprogramming] Generate Complete Graphs To: <mailto:programm...@jsoftware.com> programm...@jsoftware.com Date: Sunday, September 27, 2015, 11:21 AM Yes, that's very pretty. Henry Rich On 9/26/2015 10:08 PM, Linda A Alvord wrote: > Or: > > 5 5#:I.,</~i.5 > 0 1 > 0 2 > 0 3 > 0 4 > 1 2 > 1 3 > 1 4 > 2 3 > 2 4 > 3 4 > > -----Original Message----- > From: <mailto:programming-boun...@forums.jsoftware.com> programming-boun...@forums.jsoftware.com > [ <mailto:programming-boun...@forums.jsoftware.com> mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Raul Miller > Sent: Saturday, September 26, 2015 6:52 PM > To: Programming forum > Subject: Re: [Jprogramming] Generate Complete Graphs > > Another variation might be: > > require'stats' > complete=: 2&comb > > That said, here's an illustration of why it can be easy to calculate: > -.+/\=i.5 > 0 1 1 1 1 > 0 0 1 1 1 > 0 0 0 1 1 > 0 0 0 0 1 > 0 0 0 0 0 > > 5 5 #:I.,-.+/\=i.5 > 0 1 > 0 2 > 0 3 > 0 4 > 1 2 > 1 3 > 1 4 > 2 3 > 2 4 > 3 4 > > Making that concise and tacit will change its form, but hopefully the > underlying concept is clear? > > Thanks, > > -- > Raul > > On Sat, Sep 26, 2015 at 5:37 PM, Linda A Alvord < <mailto:lindaalv...@verizon.net> lindaalv...@verizon.net> > wrote: >> Enter "comb" to see the tacit version of my verb: >> >> comb >> ([ = [: +/"1 [: #: [: i. 2 ^ ]) ([: |. [: I. #) [: #: [: i. 2 ^ ] >> >> Linda >> >> -----Original Message----- >> From: <mailto:programming-boun...@forums.jsoftware.com> programming-boun...@forums.jsoftware.com >> [ <mailto:programming-boun...@forums.jsoftware.com> mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Linda A >> Alvord >> Sent: Saturday, September 26, 2015 11:48 AM >> To: <mailto:programm...@jsoftware.com> programm...@jsoftware.com >> Subject: Re: [Jprogramming] Generate Complete Graphs >> >> comb=: 13 :'(x=+/"1 #:i.2^y) ([:|.[:I.#) #:i.2^y' >> 2 comb 5 >> 0 1 >> 0 2 >> 0 3 >> 0 4 >> 1 2 >> 1 3 >> 1 4 >> 2 3 >> 2 4 >> 3 4 >> >> 3 comb 4 >> 0 1 2 >> 0 1 3 >> 0 2 3 >> 1 2 3 >> >> >> -----Original Message----- >> From: <mailto:programming-boun...@forums.jsoftware.com> programming-boun...@forums.jsoftware.com >> [ <mailto:programming-boun...@forums.jsoftware.com> mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Henry >> Rich >> Sent: Saturday, September 26, 2015 11:12 AM >> To: <mailto:programm...@jsoftware.com> programm...@jsoftware.com >> Subject: Re: [Jprogramming] Generate Complete Graphs >> >> ; <@({. ,. }.)\.@i. 5 >> >> >> >> (#~ </"1) (#: <mailto:i.@(*/))> i.@(*/)) 2 $ 5 >> >> Henry Rich >> >> On 9/26/2015 9:24 AM, 'Jon Hough' via Programming wrote: >>> 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 >>> < <mailto:programm...@jsoftware.com> programm...@jsoftware.com> >> wrote: >>> Subject: [Jprogramming] Generate Complete Graphs >>> To: "Programming Forum" < <mailto:programm...@jsoftware.com> 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> http://www.jsoftware.com/forums.htm >>> >>> --------------------------------------------------------------------- >>> - For information about J forums see >>> <http://www.jsoftware.com/forums.htm> http://www.jsoftware.com/forums.htm >>> >> ---------------------------------------------------------------------- >> For information about J forums see <http://www.jsoftware.com/forums.htm> http://www.jsoftware.com/forums.htm >> >> ---------------------------------------------------------------------- >> For information about J forums see <http://www.jsoftware.com/forums.htm> http://www.jsoftware.com/forums.htm >> >> ---------------------------------------------------------------------- >> For information about J forums see <http://www.jsoftware.com/forums.htm> http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see <http://www.jsoftware.com/forums.htm> http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see <http://www.jsoftware.com/forums.htm> http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see <http://www.jsoftware.com/forums.htm> http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see <http://www.jsoftware.com/forums.htm> http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm