UNPKG

fizz_buzz

Version:
57 lines (47 loc) 1.72 kB
(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 }); })));