Fizz buzz

Prueba de programación

JavGuerra,

Programación

«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.

const result = [];

for (let i = 1; i <= 100; i++) {
  let value = '';

  if (i % 3 === 0) value += 'fizz';
  if (i % 5 === 0) value += 'buzz';

  result.push(value || i);
}

console.log(result.join(', '));

Básicamente el programa comprueba en bucle si cada número del 1 al 100 es divisible por 3 ó por 5. Si lo es, guarda «fizz», «buzz» o «fizzbuzz» en el caso de ser divisible por los dos (3 y 5). Si no lo es, guarda el número que estoy evaluando y pasa al siguiente número.

Esta es una versión que además de correcta, es muy legible. Pero si quisiéramos hacer una versión al estilo funcional, por ejemplo para usarla en React, podríamos emplear map.

const result = [...Array(100).keys()]
  .map(i => {
    const n = i + 1;
    return (n % 3 ? '' : 'fizz') + (n % 5 ? '' : 'buzz') || n;
  })
  .join(', ');

console.log(result);

¿Crees que puede optimizarse más?

Comentarios

← Volver