TapeEquilibrium

Lesson from https://codility.com/programmers/lessons/3-time_complexity/tape_equilibrium/

by evgkch

JavaScript

const sequence = (A) => {
	let arr = [];
  let a = 0;
	A.map( (b) => {
  	b = b + a;
  	arr.push(b);
    a = b;
  });
  return arr;
};

const residual = (a, s) => Math.abs(s - 2 * a);

const solution = (A) => {
  let length = A.length - 1;
  let S = sequence(A);
  let min = residual( S[0], S[length] );
  for (let i = 1; i < length; i++) {
  	if (residual( S[i], S[length]) === 0) {
    	return 0;
    } else if (residual( S[i], S[length]) < min) {
    	min = residual( S[i], S[length]);
    }
  }
  return min;
}

let a = [3, 1, 2, 4, 3]
console.log(solution(a))