Re: DeleteCases
- To: mathgroup at smc.vnet.net
- Subject: [mg98158] Re: [mg98144] DeleteCases
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Wed, 1 Apr 2009 05:54:21 -0500 (EST)
- Reply-to: hanlonr at cox.net
list = {{0, 0, 1, 1}, {0, 0, 2, 2}, {0, 0, 3, 3}, {1, 1, 0, 0}, {1, 1, 2, 2}, {1, 1, 3, 3}, {2, 2, 0, 0}, {2, 2, 1, 1}, {2, 2, 3, 3}, {3, 3, 0, 0}, {3, 3, 1, 1}, {3, 3, 2, 2}}; Union[list, SameTest -> (#1 == Reverse[#2] &)] {{0, 0, 1, 1}, {0, 0, 2, 2}, {0, 0, 3, 3}, {1, 1, 2, 2}, {1, 1, 3, 3}, {2, 2, 3, 3}} list //. {s___, {a_, a_, b_, b_}, m___, {b_, b_, a_, a_}, e___} :> {s, {a, a, b, b}, m, e} {{0, 0, 1, 1}, {0, 0, 2, 2}, {0, 0, 3, 3}, {1, 1, 2, 2}, {1, 1, 3, 3}, {2, 2, 3, 3}} n = 1; DeleteCases[list, _?(MemberQ[Take[list, n++], Reverse[#]] &)] {{0, 0, 1, 1}, {0, 0, 2, 2}, {0, 0, 3, 3}, {1, 1, 2, 2}, {1, 1, 3, 3}, {2, 2, 3, 3}} Bob Hanlon ---- Filippo Miatto <sottosupremo at gmail.com> wrote: ============= Dear all, Given this example list: {{0, 0, 1, 1}, {0, 0, 2, 2}, {0, 0, 3, 3}, {1, 1, 0, 0}, {1, 1, 2, 2}, {1, 1, 3, 3}, {2, 2, 0, 0}, {2, 2, 1, 1}, {2, 2, 3, 3}, {3, 3, 0, 0}, {3, 3, 1, 1}, {3, 3, 2, 2}} I need the elements {a,a,b,b} and {b,b,a,a} to be the same, i.e. i want to delete one of the two occurrences from the list. (or all but one if the condition is more complicated, say {a,b,c,d} and {b,a,c,d} or {a,b,c,d} and {a,b,d,c}) How can i do that? Can i use DeleteCases? if so, what conditional should I use to compare different elements in the list? I tried without success for all the night.. (it's 6.15AM now!) Thank you, Filippo