2015-10-23 18:02 GMT+02:00 monty <mon...@programmer.net>:

> The wiki entry says powersets have 2^n elements where n is the number of
> elements in the original set. 2^n grows exponentially fast:
>
> 2^5   = 35
> 2^10  = 1024
> 2^50  = 1125899906842624
> 2^100 = 1267650600228229401496703205376
>
> So if it's added, bounding it to only support small collections is not a
> bad idea. 2^30 = 1,073,741,824, so 30 element collections are too big (with
> 1GB address space). But <= 25 elements would be OK: 2^25 = 33,554,432
>
> I actually needed something like this a few months ago, so there are
> usecases.
>
>
But as said by Stephan Eggermont, do you really need to store all the
subsets together in memory, or would you just need to iterate them
sequentially?

If you create the subsets, then it should better be kind of lazy.



> > Sent: Thursday, October 22, 2015 at 4:58 PM
> > From: stepharo <steph...@free.fr>
> > To: "Pharo Development List" <pharo-dev@lists.pharo.org>
> > Subject: [Pharo-dev] powerSet
> >
> > Hi
> >
> > I was programming an exercise with one of my son (well in Python....
> > arghhhhhh)
> > and I end it up doing it in Pharo (I'm save now).
> >
> > The idea was to write one function that computes the powerset
> >
> > powerset(4)
> >      = a Set(a Set(1) a Set(1 2) a Set(3) a Set(2) a Set(1 3) a Set(2 3)
> > a Set(1 2 3) a Set(4) a Set(1 4) a Set(2 4) a Set(1 2 4) a Set(3 4) a
> > Set(1 3 4) a Set(2 3 4) a Set(1 2 3 4))
> >
> > I did it without thinking too much in fact
> >
> > | s n ps |
> > ps := Set new.
> >
> > 1 to: ((2 raisedTo: 4) -1)
> >      do: [ :i |
> >          s := Set new.
> >          n := 0.
> >          1 to: 4 do: [ :b |
> >              n := n + 1.
> >              ((i bitAt: b) = 1 )
> >                  ifTrue: [ s add: n].
> >              ps add: s ]].
> > ps
> >
> > but I wonder if we want to add it to our lib.
> >
> > Stef
> >
> >
>
>

Reply via email to