Re: Creating combinations from a group of sets, PART 2
- To: mathgroup at smc.vnet.net
- Subject: [mg48747] Re: [mg48739] Creating combinations from a group of sets, PART 2
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sat, 12 Jun 2004 23:33:36 -0400 (EDT)
- References: <200406120359.XAA05140@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
On 12 Jun 2004, at 12:59, John Kiehl wrote: > the recent msg[48679] on combining elements from a group of sets has > reminded me that I always wanted a Table[] command that would step > through lists instead of using iterators. For example, my NewTable[ ] > command would be used something like this: > > NewTable[ > (i+j)/ > (m+n),{1,2,3},{5,10.15.20},{3.14,1,414,0.707},{faith,hope,charity}] > > Somehow, magically, the first list would be associated with "i", the > second list with "j", etc... > > Of course, all this could be accomplished, by this Mathematica code: > > a={1,2,3}; > b={5,10.15.20}; > c={3.14,1,414,0.707}; > d={faith,hope,charity}; > > Table[ ( a[[i]] + b[[j]] ) / ( c[[m]] + d[[m]] > ),{i,1,Lengh[a]},{j,1,Length[b]},{m,1,Length[c]},{n,1,Length[d]}] > > but that's a lot of typing. > ----------------------------------------------------------------------- > -------------- > So here's my first attempt at a NewTable[] command using Distribute[] > as suggested in responses to msg[48679]. It assumes that the first > expression in NewTable[ ] is a pure function. > > Clear[a,b,c,d,e,f,g]; > NewTable[f_,h___]:=f /@ Distribute[{h},List] > > and here it is in use: > > In[]:=table[#[[1]] + #[[2]]^#[[3]] & , {a, b, c}, {d, e}, {f, g}] > Out[]:={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} > > > This has the nice advantage of working with any number of lists. I > just wish I could get rid of all the double bracket typing! > > ----------------------------------------------------------------------- > ------------------ > I'm not sure I can even figure out how WRI has programmed the regular > Table[] command. What would the code for Table[] look like? > > john kiehl > > > > But you can already do this without any additional functions and double brackets. Taking your last example: In[2]:= Flatten[Outer[#1 + #2^#3 & , {a, b, c}, {d, e}, {f, g}]] Out[2]= {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} Andrzej Kozlowski Chiba, Japan http://www.mimuw.edu.pl/~akoz/
- References:
- Creating combinations from a group of sets, PART 2
- From: John Kiehl <john.kiehl@soundtrackny.com>
- Creating combinations from a group of sets, PART 2