FizzBuzz - FreeCodeCamp Daily Challenge
Introducción
FizzBuzz es uno de los problemas más populares en entrevistas técnicas y retos de programación. Aunque parece sencillo, es ideal para practicar lógica, condicionales y manipulación de arrays.
Enunciado del Problema
Dado un entero , devuelve un array con los números del 1 al (inclusive), pero reemplazando:
- Los múltiplos de 3 por “Fizz”.
- Los múltiplos de 5 por “Buzz”.
- Los múltiplos de ambos 3 y 5 por “FizzBuzz”.
Por ejemplo, para el resultado sería:
[1, 2, 'Fizz', 4, 'Buzz', 'Fizz', 7, 8, 'Fizz', 'Buzz', 11, 'Fizz', 13, 14, 'FizzBuzz']Enfoque y Análisis
La clave está en identificar los múltiplos de 3 y 5 en el rango y reemplazarlos por las cadenas correspondientes. Usamos el operador módulo (%) para saber si un número es múltiplo: si num % divisor === 0, entonces es múltiplo.
Casos de Prueba
- fizzBuzz(2) → [1, 2]
- fizzBuzz(4) → [1, 2, “Fizz”, 4]
- fizzBuzz(8) → [1, 2, “Fizz”, 4, “Buzz”, “Fizz”, 7, 8]
- fizzBuzz(15) → [1, 2, “Fizz”, 4, “Buzz”, “Fizz”, 7, 8, “Fizz”, “Buzz”, 11, “Fizz”, 13, 14, “FizzBuzz”]
Solución
La solución más clara y directa es iterar desde 1 hasta y aplicar condicionales para decidir qué agregar al array:
function fizzBuzz(n) {
const result = []
for (let i = 1; i <= n; i++) {
if (i % 3 === 0 && i % 5 === 0) {
result.push('FizzBuzz')
}
else if (i % 3 === 0) {
result.push('Fizz')
}
else if (i % 5 === 0) {
result.push('Buzz')
}
else {
result.push(i)
}
}
return result
}Complejidad
- Tiempo: , recorremos todos los números una vez.
- Espacio: , almacenamos el array de resultados.
Reflexiones y Aprendizajes
FizzBuzz es un excelente ejercicio para practicar condicionales, bucles y el uso del operador módulo. Además, nos recuerda la importancia de considerar casos especiales y escribir código claro y legible.