# Successive differences of elements in a list with step s apart

I have a list of elements

list = {a, b, c, d, e, f, g, h, i, j, k, l, ...}


I am trying to get successive differences with step s apart. For example, for $s=3$, I am trying to get {-a + d, -d + g, -g + j, ...}.

I started with diff = Differences[list, 1, 3] which gives {-a + d, -b + e, -c + f, -d + g, -e + h, -f + i, -g + j, -h + k, -i + l}. Then I apply Take[diff, {1, -1, 3}] which gives me my desired values.

Is there any way to optimise this code for larger lists?

Thanks

• I think Differences@list[[;; ;; 3]] is what you want.
– yode
Jun 11 '16 at 5:48
• @yode Thank you Jun 11 '16 at 5:51
• @yode, that's going to be hard to outdo, so I think you can post that as an answer. :) Jun 11 '16 at 6:00
• @J.M. Done.. :)
– yode
Jun 11 '16 at 6:05

list = CharacterRange["a", "z"]

Differences@list[[;; ;; 3]]