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=3s=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

=================

1

 

I think Differences@list[[;; ;; 3]] is what you want.
– yode
Jun 11 at 5:48

  

 

@yode Thank you
– user12609
Jun 11 at 5:51

1

 

@yode, that’s going to be hard to outdo, so I think you can post that as an answer. 🙂
– J. M.♦
Jun 11 at 6:00

  

 

@J.M. Done.. 🙂
– yode
Jun 11 at 6:05

=================

1 Answer
1

=================

I don’t sure the OP appreciate this result.So I make it as a comment.Since the OP content with it,so I post it as a answer for reader.

list = CharacterRange[“a”, “z”]

{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}

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

{-a+d,-d+g,-g+j,-j+m,-m+p,-p+s,-s+v,-v+y}