Created
July 27, 2015 19:17
-
-
Save alexandrebvd/d2f27205fb4b109217d2 to your computer and use it in GitHub Desktop.
19.Bonfire: Sum All Numbers in a Range
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/*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
commented
Aug 9, 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]);
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
?
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]);
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]);
// 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