Everyone, I have given INCORRECT power set examples. Explanation and a correct example follow.
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 list of boxes ]A =: set 'a';0;0 NB. the elements are 0 and 'a' +-----+ |+-+-+| ||0|a|| |+-+-+| +-----+ NB. An element is the CONTENTS of a box in the sorted list. ps A NB. elements: set '' , set ,<0 , set 0;'a' , set ,<'a' +------------------------+ |+--+-----+-------+-----+| ||++|+---+|+-----+|+---+|| ||||||+-+|||+-+-+|||+-+||| ||++|||0|||||0|a|||||a|||| || ||+-+|||+-+-+|||+-+||| || |+---+|+-----+|+---+|| |+--+-----+-------+-----+| +------------------------+ --Kip Murray Sent from my iPad > On Nov 15, 2013, at 4:04 AM, "Linda Alvord" <[email protected]> wrote: > > Better? > > f=: 13 :'<"0 <"1 |:((>:i.#y)*/"0 |:(|:|.|:(#y)#2)#:i.2^#y){'' '',y' > f 'ABC' > ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ > │┌───┐│┌───┐│┌───┐│┌───┐│┌───┐│┌───┐│┌───┐│┌───┐│ > ││ │││ C│││ B │││ BC│││A │││A C│││AB │││ABC││ > │└───┘│└───┘│└───┘│└───┘│└───┘│└───┘│└───┘│└───┘│ > └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ > > Linda > > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of km > Sent: Friday, November 15, 2013 3:20 AM > To: [email protected] > Subject: Re: [Jprogramming] Sets > > This is excellent. You need to insert a sort: > > psa =: (<@#~ 2 #:@i.@^ #)&.> NB. Alford's ps > > psa set 'A';'B';'C' > +----------------------------------------+ > |++---+---+-----+---+-----+-----+-------+| > |||+-+|+-+|+-+-+|+-+|+-+-+|+-+-+|+-+-+-+|| > ||||C|||B|||B|C|||A|||A|C|||A|B|||A|B|C||| > |||+-+|+-+|+-+-+|+-+|+-+-+|+-+-+|+-+-+-+|| > |++---+---+-----+---+-----+-----+-------+| > +----------------------------------------+ > ps set 'A';'B';'C' NB. Do you see the sort I mean? > +----------------------------------------+ > |++---+-----+-------+-----+---+-----+---+| > |||+-+|+-+-+|+-+-+-+|+-+-+|+-+|+-+-+|+-+|| > ||||A|||A|B|||A|B|C|||A|C|||B|||B|C|||C||| > |||+-+|+-+-+|+-+-+-+|+-+-+|+-+|+-+-+|+-+|| > |++---+-----+-------+-----+---+-----+---+| > +----------------------------------------+ > > --Kip > > Sent from my iPad > >> On Nov 15, 2013, at 12:21 AM, "Linda Alvord" <[email protected]> wrote: >> >> f=: 13 :'<"0 <"1 |:((>:i.#y)*/"0 |:((#y)#2)#:i.2^#y){'' '',y' >> f 'ABC' >> ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┐ >> │┌───┐│┌───┐│┌───┐│┌───┐│┌───┐│┌───┐│┌───┐│┌───┐│ >> ││ │││ C│││ B │││ BC│││A │││A C│││AB │││ABC││ >> │└───┘│└───┘│└───┘│└───┘│└───┘│└───┘│└───┘│└───┘│ >> └─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘ >> >> I think this has a prettier empty set! >> >> set =: [: < [: /:~ ~. >> set 'A';'B';'C' >> ┌───────┐ >> │┌─┬─┬─┐│ >> ││A│B│C││ >> │└─┴─┴─┘│ >> └───────┘ >> ps=: (<@#~ 2 #:@i.@^ #)&.> >> ps set 'A';'B';'C' >> ┌────────────────────────────────────────┐ >> │┌┬───┬───┬─────┬───┬─────┬─────┬───────┐│ >> │││┌─┐│┌─┐│┌─┬─┐│┌─┐│┌─┬─┐│┌─┬─┐│┌─┬─┬─┐││ >> ││││C│││B│││B│C│││A│││A│C│││A│B│││A│B│C│││ >> │││└─┘│└─┘│└─┴─┘│└─┘│└─┴─┘│└─┴─┘│└─┴─┴─┘││ >> │└┴───┴───┴─────┴───┴─────┴─────┴───────┘│ >> └────────────────────────────────────────┘ >> >> >> >> >> >> -----Original Message----- >> From: [email protected] >> [mailto:[email protected]] On Behalf Of km >> Sent: Friday, November 15, 2013 12:48 AM >> To: [email protected] >> Subject: Re: [Jprogramming] Sets >> >> You have the right idea but are not using my definition of set. >> Compare >> >> set 'A';'B';'C' NB. My version of your 'ABC' >> +-------+ >> |+-+-+-+| >> ||A|B|C|| >> |+-+-+-+| >> +-------+ >> ps set 'A';'B';'C' NB. my version of your f 'ABC' >> +----------------------------------------+ >> |++---+-----+-------+-----+---+-----+---+| >> |||+-+|+-+-+|+-+-+-+|+-+-+|+-+|+-+-+|+-+|| >> ||||A|||A|B|||A|B|C|||A|C|||B|||B|C|||C||| >> |||+-+|+-+-+|+-+-+-+|+-+-+|+-+|+-+-+|+-+|| >> |++---+-----+-------+-----+---+-----+---+| >> +----------------------------------------+ >> >> --Kip >> >> Sent from my iPad >> >>> On Nov 14, 2013, at 6:54 PM, "Linda Alvord" <[email protected]> wrote: >>> >>> f=: 13 :' <"1 |:((>:i.#y)*/"0 |:((#y)#2)#:i.2^#y){'' '',y' >>> f 'ABC' >>> ----T---T---T---T---T---T---T---┐ >>> │ │ C│ B │ BC│A │A C│AB │ABC│ >>> L---+---+---+---+---+---+---+---- >>> >>> This is a set of the subsets? I haven't looked at your example yet. >>> >>> Linda >>> >>> >>> -----Original Message----- >>> From: [email protected] >>> [mailto:[email protected]] On Behalf Of km >>> Sent: Thursday, November 14, 2013 3:18 PM >>> To: [email protected] >>> Subject: [Jprogramming] Sets >>> >>> Here is my latest attempt at sets in J. Would anyone care to write a >>> verb ps (power set) such that ps y is the set of all subsets of set y? >>> It's called the power set in part because when a set has n elements >>> its power set has 2^n elements. --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 list. >>> NB. A -: B tests whether set A is set B. >>> >>> set =: [: < [: /:~ ~. NB. create set from list of boxes >>> >>> NB. The list may have duplicates but the set has none. >>> >>> EE =: <$0 NB. empty set, same as Ace a: >>> >>> eo =: <@[ e. >@] NB. test whether x is an element of y >>> >>> uu =: [: set ,&> NB. union >>> >>> mm =: [: < -.&> NB. minus >>> >>> sd =: mm uu mm~ NB. symmetric difference >>> >>> cp =: uu mm sd NB. common part (intersection) >>> >>> ss =: uu -: ] NB. test whether x is a subset of y >>> >>> (set 1;2;3;3) -: set 3;1;2 >>> 1 >>> >>> ]A =: set 2;'b';1;'a' >>> +---------+ >>> |+-+-+-+-+| >>> ||1|2|a|b|| >>> |+-+-+-+-+| >>> +---------+ >>> >>> ]B =: set 'b';'a';4;3;'a' >>> +---------+ >>> |+-+-+-+-+| >>> ||3|4|a|b|| >>> |+-+-+-+-+| >>> +---------+ >>> >>> A uu B >>> +-------------+ >>> |+-+-+-+-+-+-+| >>> ||1|2|3|4|a|b|| >>> |+-+-+-+-+-+-+| >>> +-------------+ >>> >>> A sd B >>> +---------+ >>> |+-+-+-+-+| >>> ||1|2|3|4|| >>> |+-+-+-+-+| >>> +---------+ >>> >>> A cp B >>> +-----+ >>> |+-+-+| >>> ||a|b|| >>> |+-+-+| >>> +-----+ >>> >>> NB. Below is the set of all subsets of set 0;1 >>> >>> set EE;(set <0);(set <1);<set 0;1 >>> +------------------------+ >>> |+--+-----+-------+-----+| >>> ||++|+---+|+-----+|+---+|| >>> ||||||+-+|||+-+-+|||+-+||| >>> ||++|||0|||||0|1|||||1|||| >>> || ||+-+|||+-+-+|||+-+||| >>> || |+---+|+-----+|+---+|| >>> |+--+-----+-------+-----+| >>> +------------------------+ >>> >>> 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 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
