Re: Handling conditions on subvector elements
- To: mathgroup at smc.vnet.net
- Subject: [mg117571] Re: Handling conditions on subvector elements
- From: DrMajorBob <btreat1 at austin.rr.com>
- Date: Wed, 23 Mar 2011 02:53:41 -0500 (EST)
v = {{1, 1, 2}, {1, 1, 3}, {2, 3, 1}, {1, 2, 3}, {3, 3, 1}}; Replace[v, {{a_, a_, b_} /; a != b -> 1, {_, _, _} -> 2}, 1] {1, 1, 2, 2, 1} or: f[{a_, b_, c_}] := 2 - Boole[a == b && a != c] f /@ v {1, 1, 2, 2, 1} or: Clear[f] f[{a_, a_, b_}] := 1 + Boole[a == b] f[{_, _, _}] = 2; f /@ v {1, 1, 2, 2, 1} A simpler version of the first solution fails: {1, 2, 3} /. {{a_, a_, b_} /; a != b -> 1, {_, _, _} -> 2} 2 Bobby On Tue, 22 Mar 2011 05:05:46 -0500, Lengyel Tamas <lt648 at hszk.bme.hu> wrote: > Dear Mathworld users, > > I am struggling with a piece of code which should result in a List : > > 1) I have a vector with subvectors with triplets of values. > 2) What I wish to achieve is a cycle that returns with a List with either > '1's or '2's in it. > 3) The cycle should check whether the first and second element in > subvectors are equal and neither of them are equal with the third, if so, > return 1; > If all the elements are unequal, return 2 > > E.g. > > V= {{1,1,2},{1,1,3},{2,3,1},{1,2,3},{3,3,1}} should return with {1, 1, 2, > 2,1} > > I'm assuming 'If' should be the key (as it returns 2 types of values), > but > I can't seem to do it properly. > > Thank you in advance > > Tamas > -- DrMajorBob at yahoo.com