JavGuerra,
«Fizz buzz» es un ejercicio que habitualmente se usa como prueba para la selección de candidatos en programación. Su origen es un juego de niños para aprender a dividir.
Escribir un programa que muestre en pantalla los números del 1 al 100, sustituyendo los múltiplos de 3 por la palabra “fizz”, los múltiplos de 5 por “buzz” y los múltiplos de ambos, es decir, los múltiplos de 3 y 5 (o de 15), por la palabra “fizzbuzz”.
Este simple enunciado encierra toda una gama de posibilidades en su algoritmo de resolución, y en él es de importancia tanto la rapidez con la que se resuelve el problema como la optimización (u originalidad) del código.
Esta es mi propuesta de resolución en JavaScript.
let result = '1';
let x3, x5;
for (let i = 2; i <= 100; i++)
{
result += ', ';
x3 = i % 3 == 0;
x5 = i % 5 == 0;
if (x3 || x5) {
if (x3) result += 'fizz';
if (x5) result += 'buzz';
} else result += i;
}
console.log (result);
Básicamente el programa comprueba en bucle si cada número del 1 al 100 es divisible por 3 ó por 5. Si no lo es, imprime el número que estoy evaluando y pasa al siguiente número, sin más comprobaciones.
Si lo es, comprueba independientemente si es divisible por 3, y si es divisible por 5, imprimiendo «fizz», «buzz» o «fizzbuzz» en el caso de ser divisible por los dos (3 y 5).
Para saber si el número que estoy evaluando es divisible por 3 o por 5, y evitar repetir operaciones de cálculo, guardo el resultado booleano del resto de las divisiones en las variables x3 y x5 que luego uso en las comprobaciones.
¿Crees que puede optimizarse más?