Skip to content

Instantly share code, notes, and snippets.

@twmulloy
Last active June 6, 2017 18:57
Show Gist options
  • Save twmulloy/1e192b5b429254741334ccfb173469f2 to your computer and use it in GitHub Desktop.
Save twmulloy/1e192b5b429254741334ccfb173469f2 to your computer and use it in GitHub Desktop.
// http://wiki.c2.com/?FizzBuzzTest
// Write a program that prints the numbers from 1 to 100.
// But for multiples of three print “Fizz” instead of the
// number and for the multiples of five print “Buzz”. For
// numbers which are multiples of both three and five
// print “FizzBuzz”.
var fizzBuzz = (function() {
var FIZZ = 'Fizz';
var BUZZ = 'Buzz';
var output = '';
for (var i = 1; i <= 100; i++) {
if (i % 3 === 0 && i % 5 === 0) { // `if (i % 15 === 0) {`
output += FIZZ + BUZZ;
} else if (i % 3 === 0) {
output += FIZZ;
} else if (i % 5 === 0) {
output += BUZZ;
} else {
output += i;
}
}
return output;
})();
console.log(fizzBuzz);
// 12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz1617Fizz19BuzzFizz2223FizzBuzz26Fizz2829FizzBuzz3132Fizz34BuzzFizz3738FizzBuzz41Fizz4344FizzBuzz4647Fizz49BuzzFizz5253FizzBuzz56Fizz5859FizzBuzz6162Fizz64BuzzFizz6768FizzBuzz71Fizz7374FizzBuzz7677Fizz79BuzzFizz8283FizzBuzz86Fizz8889FizzBuzz9192Fizz94BuzzFizz9798FizzBuzz
// Write a program that prints the numbers from 1 to 100.
// But for multiples of three print “Fizz” instead of the
// number and for the multiples of five print “Buzz”. For
// numbers which are multiples of both three and five
// print “FizzBuzz”.
var fizzBuzz = (function() {
var FIZZ = 'Fizz';
var BUZZ = 'Buzz';
var FIZZBUZZ = FIZZ + BUZZ;
var outputs = [];
function reset() {
outputs = [];
}
function output(i) {
if (i % 3 === 0 && i % 5 === 0) { return FIZZBUZZ }
if (i % 3 === 0) { return FIZZ }
if (i % 5 === 0) { return BUZZ }
return i + '';
}
function format() {
return outputs.join('');
}
function loop() {
outputs = [];
for (var i = 1; i <= 100; i++) {
outputs.push(output(i));
}
return format(outputs);
}
function recursive(i, limit) {
outputs.push(output(i));
if (i === limit) { return format(outputs) }
return recursive(i + 1, limit);
}
return {
reset: reset,
loop: loop,
recursive: recursive
};
})();
console.log('output:', fizzBuzz.loop());
fizzBuzz.reset();
console.log('output:', fizzBuzz.recursive(1, 100));
// output: 12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz1617Fizz19BuzzFizz2223FizzBuzz26Fizz2829FizzBuzz3132Fizz34BuzzFizz3738FizzBuzz41Fizz4344FizzBuzz4647Fizz49BuzzFizz5253FizzBuzz56Fizz5859FizzBuzz6162Fizz64BuzzFizz6768FizzBuzz71Fizz7374FizzBuzz7677Fizz79BuzzFizz8283FizzBuzz86Fizz8889FizzBuzz9192Fizz94BuzzFizz9798FizzBuzz
// output: 12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz1617Fizz19BuzzFizz2223FizzBuzz26Fizz2829FizzBuzz3132Fizz34BuzzFizz3738FizzBuzz41Fizz4344FizzBuzz4647Fizz49BuzzFizz5253FizzBuzz56Fizz5859FizzBuzz6162Fizz64BuzzFizz6768FizzBuzz71Fizz7374FizzBuzz7677Fizz79BuzzFizz8283FizzBuzz86Fizz8889FizzBuzz9192Fizz94BuzzFizz9798FizzBuzz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment