Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // FizzBuzz: Obfuscated and Verbose Edition
- /**
- * Determines if a number is divisible by a given divisor
- * @param {number} number
- * @param {number} divisor
- * @returns {boolean}
- */
- const isDivisibleBy = (number, divisor) => {
- return number % divisor === 0;
- };
- /**
- * Generates the word 'fizz' if divisible by 3
- * @param {number} number
- * @returns {string}
- */
- const fizzLogic = (number) => {
- let result = '';
- if (isDivisibleBy(number, 3)) {
- result += 'fizz';
- }
- return result;
- };
- /**
- * Generates the word 'buzz' if divisible by 5
- * @param {number} number
- * @returns {string}
- */
- const buzzLogic = (number) => {
- let result = '';
- if (isDivisibleBy(number, 5)) {
- result += 'buzz';
- }
- return result;
- };
- /**
- * Aggregates the fizz and buzz logic
- * @param {number} number
- * @returns {string}
- */
- const applyFizzBuzzLogic = (number) => {
- let fizz = fizzLogic(number);
- let buzz = buzzLogic(number);
- let combined = fizz + buzz;
- return combined;
- };
- /**
- * Returns the final FizzBuzz result or the number itself
- * @param {number} number
- * @returns {string|number}
- */
- const getFizzBuzzOutput = (number) => {
- let logicResult = applyFizzBuzzLogic(number);
- let output;
- if (logicResult.length > 0) {
- output = logicResult;
- } else {
- output = number;
- }
- return output;
- };
- /**
- * Logs a single FizzBuzz output to the console
- * @param {number} number
- */
- const logFizzBuzz = (number) => {
- let result = getFizzBuzzOutput(number);
- console.log(result);
- };
- /**
- * Executes FizzBuzz from start to end
- * @param {number} start
- * @param {number} end
- */
- const runFizzBuzz = (start, end) => {
- for (let i = start; i < end; i++) {
- logFizzBuzz(i);
- }
- };
- // Configuration object for flexibility (because why not?)
- const fizzBuzzConfig = {
- startValue: 1,
- endValue: 100
- };
- // Run the verbose FizzBuzz
- (() => {
- let configStart = fizzBuzzConfig.startValue;
- let configEnd = fizzBuzzConfig.endValue;
- runFizzBuzz(configStart, configEnd);
- })();
Advertisement
Add Comment
Please, Sign In to add comment