← JavaScript

Coding challenge

FizzBuzz (the interview classic).

Challenge: FizzBuzz (the interview classic).
Print the numbers from 1 to n, but:
- If it is a multiple of 3, print "Fizz".
- If it is a multiple of 5, print "Buzz".
- If it is a multiple of both 3 and 5, print "FizzBuzz".
Input: n = 15
Expected output: 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz
Show solution
// Reto: FizzBuzz (el clásico de las entrevistas).
// Imprime los números del 1 al n, pero:
// - Si es múltiplo de 3, imprime "Fizz".
// - Si es múltiplo de 5, imprime "Buzz".
// - Si es múltiplo de 3 y 5 a la vez, imprime "FizzBuzz".
// Entrada: n = 15
// Salida esperada: 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz

// Solución: iteramos del 1 al n y decidimos qué imprimir.
// El orden importa: primero revisamos el caso de 3 Y 5 a la vez.
function fizzbuzz(n) {
  const resultado = [];
  for (let i = 1; i <= n; i++) {
    if (i % 3 === 0 && i % 5 === 0) {
      resultado.push("FizzBuzz");
    } else if (i % 3 === 0) {
      resultado.push("Fizz");
    } else if (i % 5 === 0) {
      resultado.push("Buzz");
    } else {
      resultado.push(i);
    }
  }
  return resultado;
}

console.log(fizzbuzz(15).join(", "));
// 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, Fizz, Buzz, 11, Fizz, 13, 14, FizzBuzz

console.log(fizzbuzz(5).join(", "));
// 1, 2, Fizz, 4, Buzz

// Explicación:
// El operador % (módulo) da el residuo de una división. Si i % 3 es 0,
// el número es múltiplo de 3. La clave es revisar PRIMERO el caso de
// múltiplo de 3 y 5 a la vez; si lo dejáramos al final, nunca se
// alcanzaría porque las condiciones anteriores lo atraparían primero.

module.exports = { fizzbuzz };