Re: multiplying sets

• Subject: [mg2969] Re: multiplying sets
• From: Jorma.Virtamo at vtt.fi (Jorma Virtamo)
• Date: 17 Jan 1996 05:11:10 -0600
• Approved: usenet@wri.com
• Distribution: local
• Newsgroups: wri.mathgroup
• Organization: Wolfram Research, Inc.
• Sender: mj at wri.com

```
Tommi Salminen <titosa at uta.fi> 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

s1={a,b,c};
s2={d,e};
s3={f,g};

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 vtt.fi        FIN-02044 VTT
web:   http://www.vtt.fi/tte/      Finland

```

• Prev by Date: Re: multiplying sets
• Next by Date: Re: HELP! algebraic math problem
• Previous by thread: Re: multiplying sets
• Next by thread: Triangulation Problem