En algunas entrevistas laborales suele aparecer la prueba “fizz buzz”: un ejercicio simple para evaluar si dominamos las bases de la programación (la consigna puede verse en esta publicación).
Esta es una versión un poco más compleja 🤓.
Click aquí para una versión accesible de la infografía (apta para lectores electrónicos)
Dado un entero n (mayor que 1), retornar un arreglo de strings -indizado desde 1- donde:
arreglo[i] == “FizzBuzz” si i es divisible por 3 y por 5.
arreglo[i] == “Fizz” si i es divisible por 3.
arreglo[i] == “Buzz” si i es divisible por 5.
arreglo[i] == i si ninguna de las condiciones anteriores es verdadera.
Resolución:
vector<string> fizzBuzz(int n) {
vector<string> arreglo;
for (int i = 1; i <= n; ++i) {
string s = "";
if ((i % 3 != 0) and (i % 5 != 0))
s += to_string(i);
else
if (i % 3 == 0)
s += "Fizz";
if (i % 5 == 0)
s += "Buzz";
arreglo.push_back(s);
}
return arreglo;
}
Explicación:
for (int i = 1; i <= n; ++i)
: Nos piden que el índice comience en 1 (aunque el arreglo se llenará desde el principio, en la posición 0).
s += to_string(i)
: El número i debe convertirse a string porque el arreglo es de strings.
arreglo.push_back(s)
: Usamos el método para insertar en un vector (a continuación del último elemento o en la posición 0 si aún no hay elementos).</pre>
Código para ejecutar