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