MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Sum elements in a list with conditions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg69842] Re: Sum elements in a list with conditions
  • From: dimmechan at yahoo.com
  • Date: Mon, 25 Sep 2006 03:53:02 -0400 (EDT)
  • References: <ef5066$mm5$1@smc.vnet.net>

Your desired output can be achieved with proper
pattern matching.

lst = {{a1, b1}, {a2, b2}, {a2, b3}, {a2, b4}, {a3, b5}, {a3, b6}};

lst //. {a___, {x_, y_}, {x_, z_}, b___} -> {a, {x, y + z}, b}
{{a1, b1}, {a2, b2 + b3 + b4}, {a3, b5 + b6}}

Information["___"]
___ (three _ characters) or BlankNullSequence[ ] is a pattern object
that can stand for any sequence of zero or more Mathematica
expressions.
___h or BlankNullSequence[h] can stand for any sequence of expressions,

all of which have head h.
Attributes[BlankNullSequence] = {Protected}

Information["//."]
expr //. rules repeatedly performs replacements until expr no longer
changes.
Attributes[ReplaceRepeated] = {Protected}
Options[ReplaceRepeated] = {MaxIterations -> 65536}

For example

myrule = {a___, {x_, y_}, {x_, z_}, b___} -> {a, {x, y + z}, b};

dat=Table[Random[Integer,{1,5}],{30},{2}]
{{4,3},{4,5},{4,2},{5,4},{4,2},{5,2},{2,4},{5,1},{1,3},{4,4},{3,1},{3,5},
{5,4},{3,1},{3,4},{2,5},{2,5},{3,5},{4,4},{2,4},{4,3},{4,5},{5,3},{5,4},
{5,1},{1,4},{5,2},{1,3},{3,1},{4,1}}

dat//.myrule
{{4,10},{5,4},{4,2},{5,2},{2,4},{5,1},{1,3},{4,4},{3,6},{5,4},{3,5},{2,10},
{3,5},{4,4},{2,4},{4,8},{5,8},{1,4},{5,2},{1,3},{3,1},{4,1}}

Regards
Dimitris


  • Prev by Date: RE: showing your work in mathematica
  • Next by Date: linear secod order homogeneous differential equation recursions
  • Previous by thread: Re: Sum elements in a list with conditions
  • Next by thread: Re: Sum elements in a list with conditions