FizzBuzz Test
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”.
—c2.com
Here’s my solution:
Test Driven Development Approach
// TDD Readable var getFizzBuzzStatements = function (len) { var arr = [], str = ""; for (var i = 1; i <= len; i++) { str = (i % 3) ? "" : "Fizz"; str += (i % 5) ? "" : "Buzz"; arr.push(str||i); } return arr; }; var fizzBuzz = function () { console.log(getFizzBuzzStatements(100).join("\n")); }; fizzBuzz(); |
Alternative: One liner
// One liner for (i = 1; i <= 100; i++) console.log((((i % 3) ? "" : "Fizz") + (i % 5 ? "" : "Buzz")||i) + "\n") |
Alternative: Switches
var getFizzBuzzStatements = function (len) { var j, arr = []; for (var i = 1; i <= len; i++) { switch (i % 15) { case 0: arr.push("FizzBuzz"); break; case 3: case 6: case 9: case 12: arr.push("Fizz"); break; case 5: case 10: arr.push("Buzz"); break; default: arr.push(i); } } return arr; }; var fizzBuzz = function () { console.log(getFizzBuzzStatements(100).join("\n")); }; |
Demo
(Page view Count: 127)