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

Reply via email to