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.