Codesignal Solution: offsets
You are given a chain
of digits. The first element of the chain
is the initial offset. Your task is to calculate the total offset, where offset is the sum of differences between two consecutive digits.
Example
For chain = "14839"
, the output should beoffsets(chain) = 6
.
The total offset is calculated as follows:1 + ((8  4) + (3  8) + (9  3)) = 1 + (4  5 + 6) = 6
.
Input/Output
 [time limit] 4000ms (js)

[input] string chain
A string of digits.
Constraints:
5 ≤ chain.length ≤ 1000
. 
[output] integer
The total offset.
Solution
When we formalize the problem it reads like this:
\[ s = x_1 + (x_3  x_2) + (x_4  x_3) + ... + (x_n  x_{n1}) \]
Almost all terms cancel out this way and the only remaining thing is:
\[ s = x_1  x_2 + x_n \]
Since the data is given as a string instead of an array, we abuse JavaScripts capabilities of implicit typing to get to a minimalistic solution:
offsets = c =>
c[0]  c[1]  c.slice(1)