MathGroup Archive 1996

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: multiplying sets

  • To: mathgroup at
  • Subject: [mg2969] Re: multiplying sets
  • From: Jorma.Virtamo at (Jorma Virtamo)
  • Date: Wed, 17 Jan 1996 03:09:50 -0500

Tommi Salminen <titosa at> wrote:
> I have a problem as follows:
> I have a set, for instance: s={{a,b,c},{d,e},{f,g}}, and I would like
> to get a set t, that includes all possible multiplications between
> those three sets {a,b,c}, {d,e} and {f,g}. 
> Of course, one way would be :
>      Outer[Times,{a,b,c},{d,e},{f,g}], but I'd like find some kind
> of a more reasonable way to do it, because it would be just a part
> of a larger program. Anyway, it doesn't have to be some elegant way;
> if it works, it's OK.

I don't know what is wrong with the Outer. If you define


then Outer yields:

   Outer[Times,s1,s2,s3] // Flatten
  {a d f, a d g, a e f, a e g, b d f, b d g, 
   b e f, b e g, c d f, c d g, c  e f, c e g}

Another way to write the same is for instance:

   s3#& /@ s2#& /@ s1 // Flatten

with an identical result:

  {a d f, a d g, a e f, a e g, b d f, b d g, 
   b e f, b e g, c d f, c d g, c e f, c e g}

Whether this is more reasonable way to write the expression
is rather a matter of taste. Personally, I would prefer Outer, 
which also seems to be faster. Maybe you want something faster
than Outer?

-- Jorma Virtamo

Jorma Virtamo                      VTT Information Technology
phone: +358 0 456 5612             Telecommunications
fax:   +358 0 455 0115             P.O. Box 1202  
email: jorma.virtamo at        FIN-02044 VTT                        
web:      Finland


  • Prev by Date: Re: Setting parts of matrices
  • Next by Date: Re: multiplying sets
  • Previous by thread: multiplying sets
  • Next by thread: Re: multiplying sets