Re: Pattern replacement
- To: mathgroup at smc.vnet.net
- Subject: [mg122991] Re: Pattern replacement
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Sat, 19 Nov 2011 06:48:20 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201111181250.HAA07952@smc.vnet.net>
(data = Table[-1/n + u, {n, 5}]) {-1 + u, -(1/2) + u, -(1/3) + u, -(1/4) + u, -(1/5) + u} data /. Rational[-1, q_] + x_ -> q*x - 1 {-1 + u, -1 + 2 u, -1 + 3 u, -1 + 4 u, -1 + 5 u} data /. k_ + x_ -> -x/k - 1 {-1 + u, -1 + 2 u, -1 + 3 u, -1 + 4 u, -1 + 5 u} data /. k_?(Element[1/#, Integers] &) + x_ -> -x/k - 1 {-1 + u, -1 + 2 u, -1 + 3 u, -1 + 4 u, -1 + 5 u} Bob Hanlon On Fri, Nov 18, 2011 at 7:50 AM, Dr. Wolfgang Hintze <weh at snafu.de> wrote: > My questions are rather elementary. > > I wish to replace expressions of the form > > -1/2+u by 2u-1 > -1/3+u by 3u-1 > > and so on. > > Trying the replacement > > (1) (-1/2+u)/.(-1/q_ + u) -> (q x-1) > > does not work, i.e. leaves the original expression unchanged. > > Using FullForm[] to reveal the structure gives > > (2) FullForm[Rational[-1, 2] + u] > > Now the replacement in explicit form works: > > (3) (-1/2+u)/.(Rational[-1, 2] + u) -> (q u -1) > Out: -1+q*u > > But this is not a nice way to write it. > > My questions are > > 1) Are there better ways to implement the replacement? > 2) How do I "undo" FullForm[], i.e. which command produces -1/2+u from > Rational[-1,2] + u ? > (I can do it by ToExpression["Rational[-1,2] + u"] but maybe there > is another way avoiding going to strings). > > Thanks in advance > Wolfgang >
- References:
- Pattern replacement
- From: "Dr. Wolfgang Hintze" <weh@snafu.de>
- Pattern replacement