Skip to content

Instantly share code, notes, and snippets.

@alexandrebvd
Created July 27, 2015 19:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alexandrebvd/d2f27205fb4b109217d2 to your computer and use it in GitHub Desktop.
Save alexandrebvd/d2f27205fb4b109217d2 to your computer and use it in GitHub Desktop.
19.Bonfire: Sum All Numbers in a Range
/*function sumAll(arr) {
function getMaxOfArray(numArray) {
return Math.max.apply(null, numArray);
}
function getMinOfArray(numArray) {
return Math.min.apply(null, numArray);
}
var max = getMaxOfArray(arr);
var min = getMinOfArray(arr);
var n = max - min +1; //quantity of numbers to be added.
return ((max + min) * n / 2);
}
sumAll([1, 10]);*/
////////OR///////////
function sumAll(arr) {
var newArr = [];
if (arr[0] < arr[1]) {
newArr[0] = arr[0];
for (i = 1; i < arr[1]-arr[0]+1; i++) {
newArr[i] = newArr[i-1] + 1;
}
} else {
newArr[0] = arr[1];
for (i = 1; i < arr[0]-arr[1]+1; i++) {
newArr[i] = newArr[i-1] + 1;
}
}
var total = newArr.reduce(
function(previousValue, currentValue, index, array) {
return previousValue + currentValue;
});
console.log(newArr);
return total;
}
sumAll([1, 10]);
@denisnurboja
Copy link

function sumAll(arr) {
  var min = Math.min(arr[0],arr[1]);
  var max = Math.max(arr[0],arr[1]);

  return max/2*(max+1)-min/2*(min+1)+min;
}

sumAll([1, 4]);

@mflisiuk
Copy link

mflisiuk commented Oct 5, 2015

function sumAll(arr) {

    function abc(a, b) {
        return a - b;
    }
    arr = arr.sort(abc);

    var i = arr[0];
    var max = arr[arr.length - 1];
    var counter = 0;
    for (i; i <= max; i++) {
        counter = counter + i;
    }
    return counter;
}

sumAll([1, 4]);

//or

function sumAll(arr) {

    function abc(a, b) {
        return a - b;
    }
    arr = arr.sort(abc);

    var min = Math.min(arr[0], arr[arr.length-1]);
    var max = Math.max(arr[0], arr[arr.length-1]);
    var sum = [];

    for(min; min<=max; min++)
      {
        sum.push(min);
        console.log(min);
      }

   sum = sum.reduce(function(a, b){
    return a + b;
  });

    return sum;
}

sumAll([1, 4]);

@cameronbourke
Copy link

function sumAll(arr) {
  var min = Math.min(arr[0],arr[1]);
  var max = Math.max(arr[0],arr[1]);

  return Math.ceil((max - min) / 2) * (max + min);
}

Where I found what the hell a arithmetic series is, http://study.com/academy/lesson/how-to-calculate-an-arithmetic-series.html.

@denisnurboja How did you come up with max/2*(max+1)-min/2*(min+1)+min?

@GianCastle
Copy link

function sumAll(arr) {

  var arrMax = Math.max.apply(null, arr);
  var arrMin = Math.min.apply(null,arr);
  var aux = [];

  for(; arrMax >= arrMin; --arrMax)
    aux.push(arrMax);


  return aux.reduce((prev, curr) => prev + curr );
}

sumAll([1, 4,45,41312,3546]);

@tbanys
Copy link

tbanys commented Feb 20, 2016

function sumAll(arr) {

var max = Math.max(arr[0], arr[1]);
var min = Math.min(arr[0], arr[1]);
var newArray = [];

while (min <= max) {
newArray.push(min++);
}

var result = newArray.reduce(function(prev, next) {
  prev += next;
  return prev;
},0 );

return result;
}

sumAll([1, 4]);

@onedatewonder
Copy link

// Instead of iterating through a loop, I used the formula ( n*(a_1 + a_n) / 2) from algebra II ;)
// The number of things in a list, n, is the difference of their indices plus one.
// I used the absolute value to get the number of terms n. That way it doesn't matter which is bigger or smaller!
// This avoids having to assign extra variables for the bigger and the smaller value.

function sumAll(arr) {
  return ((arr[0]+arr[1])*(Math.abs(arr[0]-arr[1])+1))/2;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment