Derived from ps at http://rosettacode.org/wiki/Power_set#J

   ps=: (<@#~ 2 #:@i.@^ #)&.>

-- 
Raul


On Thu, Nov 14, 2013 at 3:17 PM, km <[email protected]> wrote:
> 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

Reply via email to