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.