Leyendo el blog de Joel Grus he encontrado una curiosidad sobre un test que muchos empleadores por lo visto realizan para descartar candidatos en una entrevista de trabajo.
El problema, conocido como test de “Fizz Buzz” consiste en escribir un código (en cualquier lenguaje de programación) que realice la siguiente tarea:
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”.
El problema no es nada complejo, de hecho es de primero de carrera. El tema está en que hay decenas (o cientos) de formas de hacerlo y en la entrevista de trabajo se valora no sólo la capacidad de programarlo, sino el tiempo que te lleva y la “eficiencia” del código utilizado.
El candidato tiene que escribirlo allí sobre la marcha en una hoja de papel o en una pizarra blanca y se supone que un programador avanzado debería pulírselo en 2 ó 3 minutos. Sin embargo, dicen que la mayoría emplea mucho más tiempo e incluso un preocupante número de programadores se bloquea y no es capaz de sacarlo.
Yo no soy informático (soy ingeniero industrial) pero he aquí mi pequeño granito de arena a resolver este problema en Java:
public static void main(String[] args) { int i; for (i = 1; i <= 100; i++) { if (i % 3 == 0 && i % 5 == 0) System.out.println("fizzbuzz "); else if (i % 3 == 0) System.out.print("fizz "); else if (i % 5 == 0) System.out.print("buzz "); else System.out.print(i + " "); } }
He tardado unos 5 minutos en realizarlo, y no soy ni mucho menos un programador senior (de hecho llevo dos días aprendiendo Java), así que imagino que habrá muchísima gente que lo sacará en un periquete (¿cualquier alumno de primero, por ejemplo?).
NOTA: la condición del primer if se podría escribir como (i % 15 == 0) de forma más elegante, pero siendo honrado lo he dejado tal como me salió en el primer intento. Eso sí, es importante que lo primero a evaluar sea la multiplicidad del 15 y no la del 3 ó el 5 por motivos evidentes.
2 comentarios en “El test de “Fizz Buzz” para contratar programadores”