Last active
September 1, 2017 16:51
-
-
Save lucas1richard/17a122e031dfbe4690cbd18c0979ddd5 to your computer and use it in GitHub Desktop.
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
/** Print all numbers in a range, except as specified in toPrint | |
* @param {[{num: number, print: string}]} toPrint - number/print specifications | |
* @param {string} multAll - message to print when all number is multiple of all numbers in toPrint | |
* @param {[number, number]} range - range over which to check for multiples | |
*/ | |
function printRange(toPrint = [], multAll = 'Multiple of All', range = [1, 50]) { | |
for (let i = range[0]; i <= range[1]; i++) { | |
console.log(isMultAll(i) || isMultPrint(i)); | |
} | |
/** Check if the passed argument is a multiple of all numbers in toPrint | |
* @param {number} inc - integer number | |
* @return {string|boolean} | |
*/ | |
function isMultAll(inc) { | |
return toPrint.reduce((memo, toprint) => { | |
return memo && !(inc % toprint.num); | |
}, true) ? multAll : false; | |
} | |
/** Check if the passed argument is a multiple of any numbers in toPrint | |
* @param {number} inc - integer number | |
* @return {string|number} | |
*/ | |
function isMultPrint(inc) { | |
return toPrint.reduce((memo, toprint) => { | |
if(!(inc % toprint.num)) { | |
memo = toprint.print; | |
} | |
return memo; | |
}, false) || inc; | |
} | |
} | |
/* Demo --------------------------------- */ | |
var toprint = [ | |
{num: 4, print: 'Skip'}, | |
{num: 5, print: 'Now'}, | |
]; | |
var rng = [1, 50]; | |
var multipleAll = 'SkipNow'; | |
printRange(toprint, multipleAll, rng); | |
// 1 | |
// 2 | |
// 3 | |
// Skip | |
// Now | |
// 6 | |
// 7 | |
// Skip | |
// 9 | |
// Now | |
// 11 | |
// Skip | |
// 13 | |
// 14 | |
// Now | |
// Skip | |
// 17 | |
// 18 | |
// 19 | |
// SkipNow | |
// 21 | |
// 22 | |
// 23 | |
// Skip | |
// Now | |
// 26 | |
// 27 | |
// Skip | |
// 29 | |
// Now | |
// 31 | |
// Skip | |
// 33 | |
// 34 | |
// Now | |
// Skip | |
// 37 | |
// 38 | |
// 39 | |
// SkipNow | |
// 41 | |
// 42 | |
// 43 | |
// Skip | |
// Now | |
// 46 | |
// 47 | |
// Skip | |
// 49 | |
// Now |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment