Publicado el 28.09.2019 a las 09:19
La verdad, es que este algoritmo es muy fácil, no obstante, lo suelen pedir mucho en las pruebas técnicas.
Es un algoritmo que dado un número, tiene que imprimir:
Para obtener puntos extras, haría el código auto-explicativo, es uno de los principios SOLID, así que mi propuesta para la solución al ejercicio sería:
export function fizzbuzz(num:number): number | string{ if(num===0) return 0; if(isDivisible(num,3) && isDivisible(num,5)) return 'fizzbuzz'; if(isDivisible(num,3)) return 'fizz'; if(isDivisible(num,5)) return 'buzz'; return num; } function isDivisible(num:number, divisor:number):boolean { if (num % divisor === 0) return true; return false; }
Para obtener más puntos aún, crearía un fichero de pruebas, esto, aunque no cambie la solución, yo lo veo como demostrar que tu nivel ya es de senior
import { fizzbuzz } from './fizzbuzz'; describe('fizzbuzz', () => { test('should print 0 if it receive 0', ()=>{ let expected:number = 0; let result:number | string = fizzbuzz(0); expect(expected).toBe(result); }); test('should print 1 if it receive 1', ()=>{ const expected:number = 1; const result:number | string = fizzbuzz(1); expect(expected).toBe(result); }); test('should print fizz if it receive a multiple of 3',()=>{ const expected:string='fizz'; const result:string | number = fizzbuzz(6); expect(expected).toBe(result); }); test('should print buzz if it receive a multiple of 5',()=>{ const expected:string='buzz'; const result:string | number = fizzbuzz(10); expect(expected).toBe(result); }); test('should print fizzbuzz if it receive a multiple of 3 andd 5',()=>{ const expected:string='fizzbuzz'; const result:string | number = fizzbuzz(15); expect(expected).toBe(result); }); });
Puedes acceder a mi repositorio para descargarte el algoritmo con pruebas unitarias
Hasta luego 🖖