You are getting closer. I start with set 1;2;3 +-------+ |+-+-+-+| ||1|2|3|| |+-+-+-+| +-------+
and end with ps set 1;2;3 +--------------------------------------------------------+ |+--+-----+-------+---------+-------+-----+-------+-----+| ||++|+---+|+-----+|+-------+|+-----+|+---+|+-----+|+---+|| ||||||+-+|||+-+-+|||+-+-+-+|||+-+-+|||+-+|||+-+-+|||+-+||| ||++|||1|||||1|2|||||1|2|3|||||1|3|||||2|||||2|3|||||3|||| || ||+-+|||+-+-+|||+-+-+-+|||+-+-+|||+-+|||+-+-+|||+-+||| || |+---+|+-----+|+-------+|+-----+|+---+|+-----+|+---+|| |+--+-----+-------+---------+-------+-----+-------+-----+| +--------------------------------------------------------+ The result looks exactly the same if you start with set '1';'2';'3' +-------+ |+-+-+-+| ||1|2|3|| |+-+-+-+| +-------+ "A set is box enclosing a list of boxes. Each box in the enclosed list contains an element of the set." --Kip Sent from my iPad > On Nov 16, 2013, at 6:46 PM, "Linda Alvord" <[email protected]> wrote: > > This looks more like your result: > > f=: 13 :'<"0<"0 <"1 |:((>:i.#y)*/"0 |:(|:|.|:(#y)#2)#:i.2^#y){'' '',y' > > f '123' > --------T-------T-------T-------T-------T-------T-------T-------┐ > │------┐│------┐│------┐│------┐│------┐│------┐│------┐│------┐│ > ││----┐│││----┐│││----┐│││----┐│││----┐│││----┐│││----┐│││----┐││ > │││ │││││ 3│││││ 2 │││││ 23│││││1 │││││1 3│││││12 │││││123│││ > ││L----│││L----│││L----│││L----│││L----│││L----│││L----│││L----││ > │L------│L------│L------│L------│L------│L------│L------│L------│ > L-------+-------+-------+-------+-------+-------+-------+-------- > > Linda > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of km > Sent: Saturday, November 16, 2013 2:13 AM > 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
