Re: Changing delayed formula

*To*: mathgroup at smc.vnet.net*Subject*: [mg35468] Re: [mg35461] Changing delayed formula*From*: BobHanlon at aol.com*Date*: Sun, 14 Jul 2002 06:19:40 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

In a message dated 7/13/02 5:43:25 AM, jvera at adinet.com.uy writes: >I have a list of lists. it's length (the number of sublists it >contains) varies. > >In[1]:= des={{11,12,13,14},{21,22,23},{31,32},{41,42,43,44,45}} > >Out[1]:= {{11,12,13,14},{21,22,23},{31,32},{41,42,43,44,45}} > >The length of each of the sublists is arbitrary, too. So I have this >list of lengths. > >In[2]:= elems=Flatten[Table[Dimensions[des[[i]]],{i,Length[des]}]] > >Out[2]:= {4,3,2,5} > >I want to obtain the list of all combinations of one element of each >sublist, bounded by &&. This will be a list of 120 elements, each of >them with 4 components. I define a delayed formula, and apply Array to > >it (the characters printed as bold are subscripts in the Mathematica >notebook). > >In[3]:= >cond4[a_,b_,g_,d_]:=des[[1,a]]&&des[[2,b]]&&des[[3,g]]&&des[[4,d]] > >In[4]:= combi=Flatten[Array[condLength[des],elems]] > >Out[4]:= >{11&&21&&31&&41,11&&21&&31&&42,11&&21&&31&&43,11&&21&&31&&44,... > > ...14&&23&&32&&42,14&&23&&32&&43,14&&23&&32&&44,14&&23&&32&&45} > >Since the length of des varies, I would have to define cond each time. > >For instance: > >cond3[a_,b_,g_,d_]:=des[[1,a]]&&des[[2,b]]&&des[[3,g]] > >I would like to make a definition for cond that would adapt to these >changes automatically. > >I arrived to this solution, which is not rejected by Mathematica, but >does not work, either. > >In[5]:= d[a_,b_]:=des[[a,b<>"_"]] > >In[6]:= Unprotect[ReplaceAll] > >Out[6]:= {ReplaceAll} > >In[7]:= >condLength[des][Table[FromCharacterCode[944+i]<>"_",{i,Length[des]}]]/.{a__}= AEa:=Apply[And,Table[d[i,FromCharacterCode[944+i]<>"_"],{i,Length[des]}]] > >In fact, I quit the kernel and rerun all the cells except the one >written here as In[3]. If not, the definition for cond4 remains as it >was. I was not able to clear cond4 individually. > >Thanks very much for anything you can suggest. des={{11,12,13,14},{21,22,23}, {31,32},{41,42,43,44,45}}; Note the length of the elements of des is given by Length /@ des {4,3,2,5} However, this is unnecessary to your problem. The desired result is just Flatten[Outer[And, Sequence@@des ]] Bob Hanlon Chantilly, VA USA