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