Si echáis un rápido vistazo por este blog ya habréis visto que le he dedicado un par de posts al test de “Fizz Buzz“, una simple pero curiosa prueba que algunas empresas utilizan como test entre aspirantes a un puesto de trabajo. La premisa es sencilla:
Escribir un código en cualquier lenguaje de programación (incluso pseudocódigo) que represente 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”.
Algo que cualquiera con conocimientos de programación podría resolver en apenas unos minutos (quizás con alguna búsqueda de apoyo en Google) resulta que llega a descartar al 99,5% de los candidatos. Los motivos puede ser varios, pero imagino que los nervios en una entrevista, la presión del entrevistador o la cuenta atrás para resolverlo pueden causar estragos.
En esta entrada quiero proponer una nueva versión del test de “Fizz Buzz” en Python (mejorando mi anterior versión) y por otro lado mostrar una nueva versión que se me ha ocurrido, la “Random Fizz Buzz” que explicaré más adelante.
Nueva versión en Python
En mi anterior versión utilicé un bucle While para realizar la iteración de 100 elementos. En esta nueva versión utilizo un bucle for y la fapp conocer gente deporte de Python que creo son más apropiadas. El código:
for i in range(1,101): if i%15 == 0: print('fizzbuzz\n', end=' ') elif i%5 == 0: print('buzz', end=' ') elif i%3 == 0: print('fizz', end=' ') else: print(i, end=' ')
El resultado:
Nuevo test: el “Random Fizz Buzz“
Programando la nueva versión se me ocurrió la idea de realizar el test de “Fizz Buzz” sobre una secuencia de 100 números, pero, en este caso, aleatoria. Las reglas son las mismas pero con 100 números aleatorios:
Escribir un código en Python que represente en pantalla 100 números del 1 al 100 en una secuencia aleatoria, 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”.
Así, que este es el código en Python:
import random as rd for i in range(1,101): a = int(rd.uniform(1,100)) if a%15 == 0: print('fizzbuzz\n', end=' ') elif a%5 == 0: print('buzz', end=' ') elif a%3 == 0: print('fizz', end=' ') else: print(a, end=' ')
El resultado variará cada vez que se ejecute a no ser que fijemos una semilla. Un resultado aleatorio que me ha salido a mi es:
Como el salto de línea se producía en los múltiplos de 15 (fizzbuzz) ya no queda tan justificado, no obstante, la representación es visualmente agradable.
Para saber más: