JavaScript · Nivel principiante · Etapa 2

FizzBuzz con una variante propia

Recorre del 1 al 23 y clasifica cada número con condiciones encadenadas y el operador módulo.

Qué hace este ejercicio

Recorre los números del 1 al 23 y, para cada uno, imprime una palabra según sus divisores. Es una variante propia del clásico FizzBuzz que practica condiciones encadenadas y el operador módulo.

Explicación

Las reglas se evalúan en orden, de la más específica a la más general:

for (i = 1; i <= num; i++) {
  if (i % 3 === 0 && i % 7 === 0) {
    console.log("FizzBuzz");
  } else if (i % 7 === 0) {
    console.log("Buzz");
  } else if (i % 3 === 0) {
    console.log("Fizz");
  } else if (!(i % 3 === 0) && String(i).includes("3")) {
    console.log("Almost Fizz");
  } else {
    console.log(i);
  }
}

Ojo a los detalles de esta variante: Buzz sale con los múltiplos de 7 (no de 5), y Almost Fizz aparece cuando el número contiene el dígito 3 sin ser múltiplo de 3 — por eso el 13 y el 23 lo muestran. El orden de los else if es clave: comprobar primero múltiplo de 3 y de 7 evita que el 21 se clasifique como Buzz o Fizz.

Dos mejoras posibles: declarar el contador con let i (aquí se crea una variable global sin querer) y quitar el !(i % 3 === 0), redundante porque la cadena else if ya garantiza que no es múltiplo de 3.

Conceptos practicados

Cómo ejecutarlo

Desde la carpeta del ejercicio:

node fizzBuzz.js
salida real
node fizzBuzz.js
Welcome to FizzBuzz!
1
2
Fizz
4
5
Fizz
Buzz
8
Fizz
10
11
Fizz
Almost Fizz
Buzz
Fizz
16
17
Fizz
19
20
FizzBuzz
22
Almost Fizz