Re: I'm looking for an algorithm: Cartesian Product
- To: mathgroup at christensen.cybernetics.net
- Subject: [mg1676] Re: [mg1644] I'm looking for an algorithm: Cartesian Product
- From: Lou Talman <me at talmanl.mscd.edu>
- Date: Tue, 11 Jul 1995 06:07:21 -0400
H. Skaf wants to compute Cartesian products.
The Outer operator finds Cartesian products fairly well. The main
problem is cleaning up the extraneous {} pairs:
In[1]:=
CleanUp[X_List] := Flatten[X, Depth[X] - 3];
In[2]:=
f[List1_List, Lists__List] :=
CleanUp[Outer[List, List1, Lists]];
In[3]:=
l1 = {a1, a2};
l2 = {b1, b2, b3};
l3 = {c1, c2, c3, c4};
l4 = {d1, d2};
In[4]:=
f[l1, l2]
Out[4]=
{{a1, b1}, {a1, b2}, {a1, b3}, {a2, b1}, {a2, b2}, {a2, b3}}
In[5]:=
f[l1, l2, l3]
Out[5]=
{{a1, b1, c1}, {a1, b1, c2}, {a1, b1, c3}, {a1, b1, c4},
{a1, b2, c1}, {a1, b2, c2}, {a1, b2, c3}, {a1, b2, c4},
{a1, b3, c1}, {a1, b3, c2}, {a1, b3, c3}, {a1, b3, c4},
{a2, b1, c1}, {a2, b1, c2}, {a2, b1, c3}, {a2, b1, c4},
{a2, b2, c1}, {a2, b2, c2}, {a2, b2, c3}, {a2, b2, c4},
{a2, b3, c1}, {a2, b3, c2}, {a2, b3, c3}, {a2, b3, c4}}
In[6]:=
f[l1, l2, l3, l4]
Out[6]=
{{a1, b1, c1, d1}, {a1, b1, c1, d2}, {a1, b1, c2, d1},
{a1, b1, c2, d2}, {a1, b1, c3, d1}, {a1, b1, c3, d2},
{a1, b1, c4, d1}, {a1, b1, c4, d2}, {a1, b2, c1, d1},
{a1, b2, c1, d2}, {a1, b2, c2, d1}, {a1, b2, c2, d2},
{a1, b2, c3, d1}, {a1, b2, c3, d2}, {a1, b2, c4, d1},
{a1, b2, c4, d2}, {a1, b3, c1, d1}, {a1, b3, c1, d2},
{a1, b3, c2, d1}, {a1, b3, c2, d2}, {a1, b3, c3, d1},
{a1, b3, c3, d2}, {a1, b3, c4, d1}, {a1, b3, c4, d2},
{a2, b1, c1, d1}, {a2, b1, c1, d2}, {a2, b1, c2, d1},
{a2, b1, c2, d2}, {a2, b1, c3, d1}, {a2, b1, c3, d2},
{a2, b1, c4, d1}, {a2, b1, c4, d2}, {a2, b2, c1, d1},
{a2, b2, c1, d2}, {a2, b2, c2, d1}, {a2, b2, c2, d2},
{a2, b2, c3, d1}, {a2, b2, c3, d2}, {a2, b2, c4, d1},
{a2, b2, c4, d2}, {a2, b3, c1, d1}, {a2, b3, c1, d2},
{a2, b3, c2, d1}, {a2, b3, c2, d2}, {a2, b3, c3, d1},
{a2, b3, c3, d2}, {a2, b3, c4, d1}, {a2, b3, c4, d2}}
--------------
--Lou Talman
Metropolitan State College of Denver