Skip to content

Instantly share code, notes, and snippets.

@peterschmiz
Created April 24, 2016 19:00
Show Gist options
  • Select an option

  • Save peterschmiz/2d99cb885fa2c03192ab853cc8dffc0f to your computer and use it in GitHub Desktop.

Select an option

Save peterschmiz/2d99cb885fa2c03192ab853cc8dffc0f to your computer and use it in GitHub Desktop.

Revisions

  1. peterschmiz created this gist Apr 24, 2016.
    28 changes: 28 additions & 0 deletions tape-equilibrium.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,28 @@
    function solution(A) {
    var p, idx,
    leftSum = 0,
    rightSum = 0,
    totalSum = A.reduce(function(pv, cv) { return pv + cv; }, 0),
    lastMin,
    currentMin,
    N = A.length;

    if (N === 2) {
    return Math.abs(A[0] - A[1]);
    }

    if (N === 1) {
    return Math.abs(A[0]);
    }

    lastMin = Math.abs(totalSum - A[0] - A[0]);

    for (p = 1; p <= N - 1; p++) {
    leftSum += A[p - 1];
    rightSum = totalSum - leftSum;
    currentMin = Math.abs(leftSum - rightSum);
    lastMin = (currentMin < lastMin) ? currentMin : lastMin;
    }

    return lastMin;
    }