Re: Loop problem

*To*: mathgroup at smc.vnet.net*Subject*: [mg123064] Re: Loop problem*From*: Bill Rowe <readnews at sbcglobal.net>*Date*: Tue, 22 Nov 2011 05:35:15 -0500 (EST)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com

On 11/21/11 at 4:27 AM, puya.sharif at live.com (P Shar) wrote: >Hey guys, i need a loop (that does the following) and can't figure >out what to do.. >I need a set of lists {i,j,k,l} i=E2=89 j=E2=89 k=E2=89 l, i=E2=89= j=k=E2=89 l, i=E2=89 j=E2=89 k=l, i=E2=89 k=E2=89 j=l >where 0 < i,j,k,l < 3. >So basically all the cases where the first condition holds and all >the cases there the second holds etc.. >Easiest would be to get the output as a matrix with the {i,j,k,l}'s >as rows. >Any ideas (or at least where to start)? First, I assume the range for i,j,k,l is {0,1,2,3} i.e., you meant less than or equal rather than strictly less than. If you did mean strictly less than, then your conditions lead to a null set for all cases. There are only two integers between 0 and 3 and you require a minimum of 3 distinct integers. So with that, the first case (all four distinct) is done by Permutations[{0,1,2,3}] The remaining conditions can all be achieve with variations of: Cases[Tuples[{0, 1, 2, 3}, 3], _?(Length@Union[#] == 3 &)] /. {a_, b_, c_} -> {a, b, b, c} Here, I use Tuples to generate all possible {i,j,k} with each >=0 and <=3 Cases to select only those with distinct values and a replacement rule to insert a copy of one in the right position. No explicit loops needed.