Re: List difference using patterns and substitutions.

• To: mathgroup at smc.vnet.net
• Subject: [mg71316] Re: List difference using patterns and substitutions.
• From: "dimitris" <dimmechan at yahoo.com>
• Date: Wed, 15 Nov 2006 06:43:00 -0500 (EST)
• References: <ejc53g\$6qf\$1@smc.vnet.net>

```Here are some ways to get from {1,2,3,5,5}->{1,1,2,0}

lst = {1, 2, 3, 5, 5}
{1, 2, 3, 5, 5}

(*1st*)

Plus[#2-#1]&@@@Partition[lst,2,1]
{1,1,2,0}

where

Apply[Plus,{{a,b},{c,d},{e,f}},{1}]\[Equal]Plus@@@{{a,b},{c,d},{e,f}}
True

execute

FrontEndExecute[{HelpBrowserLookup["RefGuide", "Apply"]}]

(*2*)

(#1[[2]] - #1[[1]] & ) /@ Partition[lst, 2, 1]
{1, 1, 2, 0}

execute

FrontEndExecute[{HelpBrowserLookup["RefGuide", "Map"]}]

(*3*)

Partition[lst, 2, 1] /. {x_, y_} -> y - x
{1, 1, 2, 0}

execute

FrontEndExecute[{HelpBrowserLookup["RefGuide", "Partition"]}]

Best Regards
Dimitris

Nacho wrote:
> Hello.
>
> I'm trying to figure how can I build a difference list from another
> using only patterns and rule substitutions.
>
> The idea is to get from a list, another, one element shorter, where
> each value is the substraction of two consecutive elements in the
> original list, that is, from {1,2,3,5,5} get {1,1,2,0}.
>
> I've been thinking about it for a while, and I know several methods
> using a more traditional programming style (with For, for example), but
> I have no idea if it is possible to make it simple and fast with rule
> substitutions.
>
> Any idea?
>