Skip to content

Instantly share code, notes, and snippets.

@mwakipesile
Created April 30, 2018 21:11
Show Gist options
  • Save mwakipesile/0b8f9e4b07c53459bbc0d02df6863cdd to your computer and use it in GitHub Desktop.
Save mwakipesile/0b8f9e4b07c53459bbc0d02df6863cdd to your computer and use it in GitHub Desktop.
function sumOfMultiples(limit, factors = [3, 5]) {
var multiple;
var multiples = [];
var isValidInt = num => Number.isInteger(num) && num > 0;
var validFactors = array => Array.isArray(array) && array.every(isValidInt);
var collectFactorsUniqueMultiples = function(factor) {
multiple = factor;
while (multiple < limit) {
if (!multiples.includes(multiple)) multiples.push(multiple);
multiple += factor;
}
};
var sumMultiples = (sum, currentMultiple) => sum + currentMultiple;
// Validate inputs. Return null for invalid inputs
if (!isValidInt(limit) || !validFactors(factors) || factors.length === 0) return null;
factors.forEach(collectFactorsUniqueMultiples);
return multiples.reduce(sumMultiples, 0);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment