Thank you, Linda. This is good work. I have now abandoned the "enclosing box" and have a new proposal in which a set is a sorted duplicate-free list of boxes. An element is the contents of a box in the list. Please take a look at the new proposal, which I put in a recent email. --Kip
Sent from my iPad > On Nov 18, 2013, at 3:47 AM, "Linda Alvord" <[email protected]> wrote: > > I thought you might enjoy this: > > ps =: [: set [: <"0 ([: |. [: #: [: i. 2 ^ #@>) (([:<#)"1) > > ps set 1;2;3 > ---------------------------------------------------------┐ > │---T-----T-------T---------T-------T-----T-------T-----┐│ > ││-┐│----┐│------┐│--------┐│------┐│----┐│------┐│----┐││ > ││││││--┐│││--T-┐│││--T-T-┐│││--T-┐│││--┐│││--T-┐│││--┐│││ > ││L-│││1│││││1│2│││││1│2│3│││││1│3│││││2│││││2│3│││││3││││ > ││ ││L--│││L-+--│││L-+-+--│││L-+--│││L--│││L-+--│││L--│││ > ││ │L----│L------│L--------│L------│L----│L------│L----││ > │L--+-----+-------+---------+-------+-----+-------+------│ > L--------------------------------------------------------- > > ps2=: [: set"0 ([: #: [: i. 2 ^ [: # >) (([: < #)"1) > > ps2 set 1;2;3 > ---T-----T-----T-------T-----T-------T-------T---------┐ > │-┐│----┐│----┐│------┐│----┐│------┐│------┐│--------┐│ > │││││--┐│││--┐│││--T-┐│││--┐│││--T-┐│││--T-┐│││--T-T-┐││ > │L-│││3│││││2│││││2│3│││││1│││││1│3│││││1│2│││││1│2│3│││ > │ ││L--│││L--│││L-+--│││L--│││L-+--│││L-+--│││L-+-+--││ > │ │L----│L----│L------│L----│L------│L------│L--------│ > L--+-----+-----+-------+-----+-------+-------+---------- > > ps3 =: [: set"0 ([:|.[: #: [: i. 2 ^ [: # >) (([: < #)"1) > > ps3 set 1;2;3 > ----------T-------T-------T-----T-------T-----T-----T--┐ > │--------┐│------┐│------┐│----┐│------┐│----┐│----┐│-┐│ > ││--T-T-┐│││--T-┐│││--T-┐│││--┐│││--T-┐│││--┐│││--┐│││││ > │││1│2│3│││││1│2│││││1│3│││││1│││││2│3│││││2│││││3│││L-│ > ││L-+-+--│││L-+--│││L-+--│││L--│││L-+--│││L--│││L--││ │ > │L--------│L------│L------│L----│L------│L----│L----│ │ > L---------+-------+-------+-----+-------+-----+-----+--- > > ps4 =: [: set"0 ([:|:[:|.[:|:[: #: [: i. 2 ^ [: # >) (([: < #)"1) > > ps4 set 1;2;3 > ---T-----T-----T-------T-----T-------T-------T---------┐ > │-┐│----┐│----┐│------┐│----┐│------┐│------┐│--------┐│ > │││││--┐│││--┐│││--T-┐│││--┐│││--T-┐│││--T-┐│││--T-T-┐││ > │L-│││1│││││2│││││1│2│││││3│││││1│3│││││2│3│││││1│2│3│││ > │ ││L--│││L--│││L-+--│││L--│││L-+--│││L-+--│││L-+-+--││ > │ │L----│L----│L------│L----│L------│L------│L--------│ > L--+-----+-----+-------+-----+-------+-------+---------- > > ps > [: set [: <"0 ([: |. [: #: [: i. 2 ^ #@>) ([: < #)"1 > > ps2 > [: set"0 ([: #: [: i. 2 ^ [: # >) ([: < #)"1 > > ps3 > [: set"0 ([: |. [: #: [: i. 2 ^ [: # >) ([: < #)"1 > > ps4 > [: set"0 ([: |: [: |. [: |: [: #: [: i. 2 ^ [: # >) ([: < #)"1 > > > Did you ever get the pdf file? I'm still trying to make the empty set be > the same size as the set with a 1 in it. > > Linda > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of km > Sent: Sunday, November 17, 2013 11:43 PM > To: [email protected] > Subject: Re: [Jprogramming] Sets please help > > Henry, thanks for your help. > > 4 is the expected level of a set whose elements are sets. Here's how it > works: > > 1;2 NB. boxes contain proposed elements 1 and 2 > +-+-+ > |1|2| > +-+-+ > set 1;2 NB. boxes containing elements are "fenced in" > +-----+ > |+-+-+| > ||1|2|| > |+-+-+| > +-----+ > (set 1;2);<set 3;4 NB. boxes contain proposed elements > +-------+-------+ > |+-----+|+-----+| > ||+-+-+|||+-+-+|| > |||1|2|||||3|4||| > ||+-+-+|||+-+-+|| > |+-----+|+-----+| > +-------+-------+ > set (set 1;2);<set 3;4 NB. boxes containing elements are "fenced in" > +-----------------+ > |+-------+-------+| > ||+-----+|+-----+|| > |||+-+-+|||+-+-+||| > ||||1|2|||||3|4|||| > |||+-+-+|||+-+-+||| > ||+-----+|+-----+|| > |+-------+-------+| > +-----------------+ > > NB. Similarly > L. ps set 1;2 > 4 > > I will look at the rank issues now. Thanks for your help. > > --Kip Murray > > Sent from my iPad > >> On Nov 17, 2013, at 8:40 PM, Henry Rich <[email protected]> wrote: >> >> It looks to me that ps adds an extra level of boxing. Check the result of >> ps set ;:'a b' >> to see if I'm wrong. > >>> On 11/17/2013 9:19 PM, km wrote: >>> Will you try to "break" the following proposal before I post it on the J > Wike? >>> >>> Thanks, >>> >>> -- Kip Murray >>> >>> >>> NB. J SETS PROPOSAL >>> >>> NB. This ia a script you can copy and save, then load or loadd. >>> >>> >>> NB. INTRODUCTION >>> >>> NB. Part of each set is its enclosing box. Like a Venn diagram set. >>> >>> NB. A set is a box enclosing a sorted list of boxes. >>> NB. An element is the contents of a box in the sorted list. >>> >>> NB. A -: B tests whether set A is set B. >>> >>> >>> NB. DEFINITIONS >>> >>> set =: [: < [: /:~ ~. NB. create set from a box or list of boxes >>> >>> NB. A set is a: or (scalar and its open is vector, boxed, without > duplicates, and sorted). >>> >>> isset =: (a: -: ]) +. [: *./ (0 = #@$) , [: ( (1 = #@$),(0 < L.),(-: >>> ~.),(-: /:~) ) > >>> >>> >>> NB. ILLUSTRATIONS >>> >>> 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 >>> >>> >>> NB. DEFINITIONS >>> >>> 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 >>> >>> 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 > "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! >>> >>> >>> NB. EXAMPLES >>> >>> (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 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
