Re: Changing delayed formula
- To: mathgroup at smc.vnet.net
- Subject: [mg35471] Re: Changing delayed formula
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Sun, 14 Jul 2002 06:19:45 -0400 (EDT)
- References: <agomv1$8er$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Julio, des={{11,12,13,14},{21,22,23},{31,32},{41,42,43,44,45}}; Flatten[Outer[And,Sequence@@des],3] -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 "Julio Vera" <jvera at adinet.com.uy> wrote in message news:agomv1$8er$1 at smc.vnet.net... > > Hi, > > 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. > > Best regards, > > Julio Vera > >