Tacit version:

ps1=: (,a:)"_ ` (<@((,0)&{) (] , ,&.>) $:@}.) @. (0<#)



----- Original Message -----
From: Roger Hui <[EMAIL PROTECTED]>
Date: Monday, August 13, 2007 8:48
Subject: Re: [Jprogramming] Power sets
To: Programming forum <[email protected]>

> A recursive version:
> 
> ps=: 3 : 'if. 0=#y do. ,a: else. (<(,0){y) (] , ,&.>) ps }.y end.'
> 
>    ps i.3
> ++-+-+---+-+---+---+-----+
> ||2|1|1 2|0|0 2|0 1|0 1 2|
> ++-+-+---+-+---+---+-----+
>    ps >;:'zero one two'
> ++----+----+----+----+----+----+----+
> ||two |one |one |zero|zero|zero|zero|
> ||    |    |two 
> |    |two |one |one |
> ||    |    |    
> |    |    |    |two |
> ||    |    |    
> |    |    |    
> |    |
> ++----+----+----+----+----+----+----+
> 
>    (ps -: powerset) i.16
> 1
>    ts 't=: ps i.16'
> 0.236343 8.8887e6
>    ts 't=: powerset i.16'
> 0.234749 1.55797e7
>    7!:5 <'t'
> 7959744
> 
> The last sentence indicates that ps does not use
> much space in excess of that needed for the result.  
> However, it is in the nature of powersets that the 
> space (and time) grows exponentially as #y .
> 
> 
> 
> ----- Original Message -----
> From: Arie Groeneveld <[EMAIL PROTECTED]>
> Date: Monday, August 13, 2007 4:56
> Subject: [Jprogramming] Power sets
> To: Programming forum <[email protected]>
> 
> > Hi,
> > 
> > 
> > To generate all subsets of set s:
> > this is what I can come up with:
> > 
> >    powerset=: 13 : '(#: i.2^#y)<@:#"1 y'
> >  
> >    a =: 1 2 3 4
> > 
> >    powerset a
> > ++-+-+---+-+---+---+-----+-+---+---+-----+---+-----+-----+-----
> --+
> > ||4|3|3 4|2|2 4|2 3|2 3 4|1|1 4|1 3|1 3 4|1 2|1 2 4|1 2 3|1 2 
> 3 4|
> > ++-+-+---+-+---+---+-----+-+---+---+-----+---+-----+-----+-----
> --+
> > 
> > ... and:
> > 
> >    ts 'it=:powerset 1+ i.20'
> > 2.73689 2.60676e8
> >    #it
> > 1048576
> > 
> > Can someone produce another verb 'powerset' because
> > it looks to me that I use to much resources.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to