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
- Bucle
forsobre un rango de números. - Condiciones encadenadas con
else if. - Operador módulo
%para detectar divisibilidad. - Comprobación de dígitos con
String(i).includes(...).
Cómo ejecutarlo
Desde la carpeta del ejercicio:
node fizzBuzz.js
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