Re: Select from Tuplet using logical expression

• To: mathgroup at smc.vnet.net
• Subject: [mg116910] Re: Select from Tuplet using logical expression
• From: Ray Koopman <koopman at sfu.ca>
• Date: Fri, 4 Mar 2011 03:39:10 -0500 (EST)
• References: <ikihne\$7sk\$1@smc.vnet.net>

```On Mar 1, 2:27 am, Lengyel Tamas <lt... at hszk.bme.hu> wrote:
> Hello.
>
> Skip if needed:
> ///I am working on a part combinatorical problem with sets of 3
> differently indexed values (e.g. F_i, F_j, F_k, F denoting frequency
> channels) which are subsets of many values (e.g 16 different frequency
> channels, denoted F_0, F_1 ... F_15).
>
> Now, I need to select triplets from these channels, I used Tuplets. So far
> so good. From these I need those combinations where indexes i!=k and/or
> j!=k, and i=j is allowed (e.g {i,j,k} = {12, 12, 4} is a valid channel
> combination, but {3, 12, 3} is not).///
>
> So basically I need to generate triplets from a range of integer numbers,
> where the first and second elements of these triplets do not match the
> third. I thought Select would help, but I don't know if there exists an
> option to control elements' values in a condition.
>
> >From then on I must use these triplets' elements in a function.
>
> But first I am asking your help in generating thos triplets of numbers.
>
> Thanks.
>
> Tam s Lengyel

1 - 6 have been posted previously. 7 is new, a modification of 6.
1 - 5 generate all the triples, then delete unwanted ones.
6 & 7 generate only the triples that are wanted.

The time differences seem to be reliable.

r = Range[32];
AbsoluteTiming[t1 = Select[Tuples[r,3],
#[[1]]!=#[[3]] && #[[2]]!=#[[3]]&];     "1"]
AbsoluteTiming[t2 = Select[Tuples[r,3],
FreeQ[Most@#,Last@#] &];                "2"]
AbsoluteTiming[t3 = Cases[Tuples[r,3],
_?(FreeQ[Most@#,Last@#]&)];             "3"]
AbsoluteTiming[t4 = DeleteCases[Tuples[r,3],
_?(MemberQ[Most@#,Last@#]&)];           "4"]
AbsoluteTiming[t5 = DeleteCases[Tuples[r,3],
{k_,_,k_}|{_,k_,k_}];                   "5"]
AbsoluteTiming[t6 = Flatten[Function[ij,Append[ij,#]&/@
Complement[r,ij]] /@ Tuples[r,2], 1];   "6"]
AbsoluteTiming[t7 = Flatten[Outer[Append,{#},
Complement[r,#],1]& /@ Tuples[r,2], 2]; "7"]
SameQ[t1,t2,t3,t4,t5,t6,t7]

{0.378355 Second, 1}
{0.390735 Second, 2}
{0.409103 Second, 3}
{0.420442 Second, 4}
{0.140180 Second, 5}
{0.128378 Second, 6}
{0.085107 Second, 7}
True

```

• Prev by Date: Re: Vector Runge-Kutta ODE solver with compilation?
• Next by Date: Re: making something autoexecute before normal execution
• Previous by thread: Re: Select from Tuplet using logical expression
• Next by thread: Re: Select from Tuplet using logical expression