fizz_buzz
Version:
Play Fizz Buzz like a Boss!
57 lines (47 loc) • 1.72 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.FizzBuzz = {})));
}(this, (function (exports) { 'use strict';
/** Throw error when required arguments are not provided */
var required = function required() {
throw new Error('Please provide all the required arguments');
};
/**
* Check if `x` is a multiple of given factors
*
* @example
* multipleOf(5, 7)(35) -> true
* multipleOf(9)(36) -> true
* multipleOf(9)(30) -> false
*/
/** :: (...number) -> (x: number) -> boolean */
var multipleOf = function multipleOf() {
for (var _len = arguments.length, factors = Array(_len), _key = 0; _key < _len; _key++) {
factors[_key] = arguments[_key];
}
return function (x) {
return factors.every(function (factor) {
return x % factor === 0;
});
};
};
/* eslint-disable */
/** (x: number) -> string | number */
var fizzBuzz = function fizzBuzz(x) {
return multipleOf(3, 5)(x) ? 'FizzBuzz' : multipleOf(3)(x) ? 'Fizz' : multipleOf(5)(x) ? 'Buzz' : x;
};
/* eslint-enable */
/** :: (print: Function, max: number?) -> void */
var play = function play() {
var print = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : required();
var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
for (var num = min; num <= max; num += 1) {
print(fizzBuzz(num));
}
};
exports.fizzBuzz = fizzBuzz;
exports['default'] = play;
Object.defineProperty(exports, '__esModule', { value: true });
})));