Skip to content

Instantly share code, notes, and snippets.

@lucas1richard
Last active September 1, 2017 16:51
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 lucas1richard/17a122e031dfbe4690cbd18c0979ddd5 to your computer and use it in GitHub Desktop.
Save lucas1richard/17a122e031dfbe4690cbd18c0979ddd5 to your computer and use it in GitHub Desktop.
/** 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