I'll try to respond below in ALL CAPS. --Kip Sent from my iPad
> On Nov 16, 2013, at 2:42 AM, "R.E. Boss" <[email protected]> wrote: > > Some remarks. > 1. A set is not required to be sorted, so I would propose (set=: <@~. ) . SORTING DISCUSSED IN CHAT WITH GREG HEIL > 2. Why not (Empty=: a:) ? WANTED TO SHOW Empty IS A NORMAL SET ACCORDING TO "BOX ENCLOSING A SORTED LIST OF BOXES". IT IS ODD TO CALL THE EMPTY LIST '' A SORTED LIST OF BOXES, BUT MATHEMATICIANS ARE HAPPY TO TALK ABOUT AN EMPTY LIST OF CABBAGES WHETHER IT MAKES SENSE OR NOT, WHY NOT AN EMPTY SORTED LIST ... ! > 3. sf=: >@{S:1 NB. retrieve element from COOL! COOL! > 4. eo=: e.S:0 NB. Is element of INSTEAD, [: +./ e.S:0 > 5. un=: set@; NB. Union; also for a list of sets INSTEAD, set@(,&>) USING MY SETS -- STOPPED CHECKING HERE > 6. your mn can be shorter: (mn=: -.&.>) or nicer (mn=: -.L:1) NB. minus > 7. nt=: [ mn mn NB. Intersection; or > nt=: mn/ NB. Intersection for a list of sets > 9. dv=: ,.L:1 NB. Display vertically > 10. eq=: mn -: mn~ NB. Equality; important since sets are not sorted > > > R.E. Boss > > (Add your info to http://www.jsoftware.com/jwiki/Community/Demographics ) > >> -----Original Message----- >> From: [email protected] [mailto:programming- >> [email protected]] On Behalf Of km >> Sent: zaterdag 16 november 2013 8:13 >> To: [email protected] >> Subject: [Jprogramming] Sets >> >> The following script for doing sets in J is a big improvement over what I >> proposed several years ago. You can save it and then do a loadd. I would > like >> to make it a J Wiki page, but it will take a while to relearn how to do > that. >> Near the end is my verb ps for creating power sets and another cp for >> creating the Cartesian product of two sets. --Kip Murray >> >> NB. A set is a box with a sorted list of boxes inside. >> NB. An element is the contents of a box in the sorted list. >> NB. A -: B tests whether set A is set B. >> >> set =: [: < [: /:~ ~. NB. create set from a box or list of boxes >> >> isset =: -: [: set > NB. test whether y is a set >> >> >> set 'a';i.2 2 NB. elements are 'a' and i. 2 2 >> >> set <'a' NB. sole element is 'a' >> >> ]Empty =: set '' NB. the empty set, same as Ace a: >> >> isset Empty >> >> >> sf =: [: > ({ >) NB. From { for sets: retrieve xth element of y, a set >> >> sn =: ([: # >) : ([: < (# >)) NB. Number # for sets >> >> eo =: <@[ e. >@] NB. test whether x is an element of y >> >> un =: [: set ,&> NB. union of x and y >> >> mn =: [: < -.&> NB. "minus" -- create set with the elements of x that are > not >> in y >> >> sd =: mn un mn~ NB. symmetric difference >> >> nt =: un mn sd NB. intersection >> >> so =: un -: ] NB. test whether x is a subset of y >> >> cp =: [: set [: , ({@(,&<))&> NB. Cartesian product, adapted from CP in >> Vocabulary's "Catalog {" >> >> ps =: [: set [: <"0 ([: #: [: i. 2 ^ #@>) <@#"1 > NB. ps y is the power > set of y >> >> NB. ps y is the set whose elements are all the subsets of y . There are > 2^#>y >> of them. >> >> dv =: [: < [: ,. > NB. dv y displays the set y vertically, useful for > power sets! >> >> >> (set 1;2;3;3) -: set 3;1;2 NB. On each side the elements are 1 and 2 and > 3 . >> >> ]A =: set 2;'b';1;'a' >> >> ]B =: set 'b';'a';4;3;'a' >> >> A un B >> >> A sd B >> >> A nt B >> >> (set 1;2) cp set 'a';'b';'c' >> >> ps set 0;1;2 >> >> >> Sent from my iPad >> ---------------------------------------------------------------------- >> 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
