Skip to content

Instantly share code, notes, and snippets.

@gustavoalbuquerquebr
Last active November 30, 2020 16:13
Show Gist options
  • Save gustavoalbuquerquebr/fe08160414518bc96952c36a6bc62063 to your computer and use it in GitHub Desktop.
Save gustavoalbuquerquebr/fe08160414518bc96952c36a6bc62063 to your computer and use it in GitHub Desktop.
#fizzbuzz
// "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”."
// 1 - simplest
function one() {
for (let i = 1; i <= 100; i++) {
if (i % 3 === 0 && i % 5 === 0) { // this is the same as 'i % 15 === 0'
console.log("FizzBuzz");
} else if (i % 3 === 0) {
console.log("Fizz");
} else if (i % 5 === 0) {
console.log("Buzz");
} else {
console.log(i);
}
}
}
// 2 - make into an array
function two() {
let a = Array.from({ length: 100 }).map((el, i) => {
let divBy3 = (i + 1) % 3 === 0;
let divBy5 = (i + 1) % 5 === 0;
if(divBy3 && divBy5) {
return "FizzBuzz";
} else if (divBy3) {
return "Fizz";
} else if (divBy5) {
return "Buzz";
} else {
return i + 1;
}
});
console.log(a);
}
// 3 - append to output
function three() {
for (let i = 1; i <= 100; i++) {
let output = "";
if (i % 3 === 0) { // alternative 'if (!(i % 3))'
output += "Fizz";
}
if (i % 5 === 0) {
output += "Buzz";
}
// if output is empty, print i
console.log(output || i);
}
}
// 4 - 'append to output' variation w/ ternary operator
function four() {
for (let i = 1; i <= 100; i++) {
console.log( ((i % 3 === 0 ? "Fizz" : "") + (i % 5 === 0 ? "Buzz" : "")) || i );
}
}
// 5 - objects
function five() {
for(let i = 1; i <= 100; i++) {
console.log(
({ true: "Fizz", false: "" }[i % 3 === 0] +
{ true: "Buzz", false: "" }[i % 5 === 0])
|| i
);
}
}
// 6 - function composition (I don't understand)
function six() {
for (let i = 1; i <= 100; i++) {
let test = (divBy, output, x) => i % divBy === 0 ? _ => output + x("") : x;
let fizz = x => test(3, "Fizz", x);
let buzz = x => test(5, "Buzz", x);
console.log(fizz(buzz(x => x))(i.toString()));
}
}
one();
two();
three();
four();
five();
six();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment