On Thu, 11 Oct 2018, Riccardo (Jack) Lucchetti wrote:

> If I'm not mistaken, this is more or less what we came up with in the end

[...]

Actually, this is slightly faster:

<hansl>
function strings powerset(strings S)
     scalar l = nelem(S)
     scalar N = 2^l
     matrix P = zeros(N,l)
     matrix s = seq(0, N-1)'

     loop i=1..l --quiet
         matrix a = s % 2
         matrix P[,i] = a
         matrix s = (s-a)/2
     endloop

     strings PS = array(N)

     loop i = 1..N --quiet
         string c = ""
         loop j = 1..l --quiet
             if P[i, j]
                 c = c ~ " " ~ S[j]
             endif
         endloop
         PS[i] = c
     endloop

     return PS
end function
</hansl>

-------------------------------------------------------
   Riccardo (Jack) Lucchetti
   Dipartimento di Scienze Economiche e Sociali (DiSES)

   Università Politecnica delle Marche
   (formerly known as Università di Ancona)

   r.lucchetti(a)univpm.it
   http://www2.econ.univpm.it/servizi/hpp/lucchetti
-------------------------------------------------------

Reply via email to