diff --git a/package-lock.json b/package-lock.json index fd061e8..92817cd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { - "name": "challenge-js-03", + "name": "javascript-challenges", "version": "1.0.0", "lockfileVersion": 2, "requires": true, "packages": { "": { - "name": "challenge-js-03", + "name": "javascript-challenges", "version": "1.0.0", "license": "MIT", "devDependencies": { - "jest": "^29.0.1" + "jest": "29.0.1" } }, "node_modules/@ampproject/remapping": { diff --git a/src/_test_/factorial.test.js b/src/_test_/factorial.test.js index 52c9f3e..b00ddae 100644 --- a/src/_test_/factorial.test.js +++ b/src/_test_/factorial.test.js @@ -1,11 +1,11 @@ -const factorial = require('../factorial.js'); +const factorialR = require('../factorial.js'); describe('factorial', () => { - it('Debe calcular el numer factorial', () => { - expect(factorial(0)).toBe(1); - expect(factorial(1)).toBe(1); - expect(factorial(5)).toBe(120); - expect(factorial(8)).toBe(40320); - expect(factorial(10)).toBe(3628800); + it('Debe calcular el numero factorial', () => { + expect(factorialR(0)).toBe(1); + expect(factorialR(1)).toBe(1); + expect(factorialR(5)).toBe(120); + expect(factorialR(8)).toBe(40320); + expect(factorialR(10)).toBe(3628800); }); -}); \ No newline at end of file +}); diff --git a/src/_test_/fibonacci.test.js b/src/_test_/fibonacci.test.js index 3e81bff..a871980 100644 --- a/src/_test_/fibonacci.test.js +++ b/src/_test_/fibonacci.test.js @@ -13,4 +13,4 @@ describe('fibonacci', () => { expect(fibonacci(9)).toEqual([1, 1, 2, 3, 5, 8, 13, 21, 34]); expect(fibonacci(10)).toEqual([1, 1, 2, 3, 5, 8, 13, 21, 34, 55]); }); -}); \ No newline at end of file +}); diff --git a/src/_test_/prueba_factorial.test.js b/src/_test_/prueba_factorial.test.js new file mode 100644 index 0000000..b2dc8e6 --- /dev/null +++ b/src/_test_/prueba_factorial.test.js @@ -0,0 +1,31 @@ +describe("Test Suite for factorial challenge", ()=>{ + test("0) Calcula factorial de ", ()=>{ + //codigo a probar + function factorialRecursivo(n){ + if(n==0){ + return 1; + } + } + //valor que se espera obtener + expect(factorialRecursivo(0)).toBe(1); + }); + + test("1) Calcula factorial de 5", ()=>{ + function factorialRecursivo(n){ + if(n==0){ + return 1; + }return n * factorialRecursivo(n-1); + } + expect(factorialRecursivo(5)).toBe(120); + }); + test("2) Calcula factorial de cualquier numero menor a 10", ()=>{ + function factorialRecursivo(n){ + if(n==0){ + return 1; + }return n * factorialRecursivo(n-1); + } + expect(factorialRecursivo(8)).toBe(40320); + }); + +}) + diff --git a/src/_test_/prueba_fibonacci.test.js b/src/_test_/prueba_fibonacci.test.js new file mode 100644 index 0000000..8c31b50 --- /dev/null +++ b/src/_test_/prueba_fibonacci.test.js @@ -0,0 +1,71 @@ + describe("Test Suite for fibonacci challenge", ()=>{ + test("0) Calcula la sucesion de fibonacci para 0 y 1", ()=>{ + function fibonacci(n){ + if(n==0){ + return [0]; + }else if(n==1){ + return [0,1]; + } + } + expect(fibonacci(0)).toEqual([0]); + }); + test("1) devuelve un arreglo para valores menores a 2", ()=>{ + const sucesion=[0,1] + function fibonacci(n){ + if(n<2){ + sucesion.shift(); + } + return sucesion; + } + expect(fibonacci(1)).toEqual([1]) + }); + test("2) Devuelve la sucesion del numero 2", ()=>{ + const sucesion=[0,1] + function fibonacci(n){ + if(n<2){ + sucesion.shift(); + return sucesion; + }else{ + for(var i=2;i<=n;i++){ + sucesion[i] = sucesion[i-2]+sucesion[i-1] + } + sucesion.shift(); + return sucesion; + } + } //cierre de funcion + expect(fibonacci(2)).toEqual([1,1]) + }); + test("3) Devuelve la sucesion del numero 3", ()=>{ + const sucesion=[0,1] + function fibonacci(n){ + if(n<2){ + sucesion.shift(); + return sucesion; + }else{ + for(var i=2;i<=n;i++){ + sucesion[i] = sucesion[i-2]+sucesion[i-1] + } + sucesion.shift(); + return sucesion; + } + } //cierre de funcion + expect(fibonacci(3)).toEqual([1,1,2]) + }); + test("4) Devuelve la sucesion del numero 5", ()=>{ + const sucesion=[0,1] + function fibonacci(n){ + if(n<2){ + sucesion.shift(); + return sucesion; + }else{ + for(var i=2;i<=n;i++){ + sucesion[i] = sucesion[i-2]+sucesion[i-1] + } + sucesion.shift(); + return sucesion; + } + } //cierre de funcion + expect(fibonacci(5)).toEqual([1,1,2,3,5]) + }); + +}) diff --git a/src/_test_/prueba_primalidad.test.js b/src/_test_/prueba_primalidad.test.js new file mode 100644 index 0000000..d23ee67 --- /dev/null +++ b/src/_test_/prueba_primalidad.test.js @@ -0,0 +1,60 @@ +describe("Test suite for prime numbers challenge",()=>{ + test("Test para comprobar que es numero mayor a 1", ()=>{ + function prime(n){ + if(n<1){ + return false; + }else return true; + } + expect(prime(0)).toBe(false); + }); + test("Test para dividir un numero con una serie de divisores", ()=>{ + const divisores = [2,3,4,5]; + var factores=2; + function division(n){ + for(var i=0;i<=n;i++){ + if(n%divisores[i]==0){ + factores++; + return factores; + } + } + } + expect(division(965)).toBe(3); + }); + test("Test para determinar numeros compuestos", ()=>{ + const divisores = [2,3,4,5]; + var factores=2; + var compuesto=false; + function division(n){ + for(var i=0;i<=n;i++){ + if(n%divisores[i]==0){ + factores++; + } + } + if(factores>=3){ + compuesto=true; + }return compuesto; + } + expect(division(333)).toBe(true); + }); + test("Test para determinar numeros primos", ()=>{ + const divisores = [2,3,4,5]; + var factores=2; + var primo=false; + function division(n){ + if(n<=1){ + return primo; + }else{ + for(var i=0;i<=n;i++){ + if(n%divisores[i]==0){ + factores++; + } + } + if(factores<=2){ + primo=true; + }return primo; + } + } + expect(division(4)).toBe(false); + }); + +}) diff --git a/src/factorial.js b/src/factorial.js index 4f3ae70..bc15a87 100644 --- a/src/factorial.js +++ b/src/factorial.js @@ -1,5 +1,10 @@ -const factorial = (number) => { - // your code here +const factorialR = (number) => { + const n=number; + if (n < 0){ + return; + }else if(n == 0){ + return 1; + }return n*factorialR(n-1); } -module.exports = factorial; \ No newline at end of file +module.exports = factorialR; diff --git a/src/fibonacci.js b/src/fibonacci.js index ea3270f..161c3d7 100644 --- a/src/fibonacci.js +++ b/src/fibonacci.js @@ -1,5 +1,20 @@ const fibonacci = (n) => { - // your code here + +const sucesion=[0,1] + + + if(n<2){ + sucesion.shift(); + return sucesion; + }else{ + for(var i=2;i<=n;i++){ + sucesion[i] = sucesion[i-2]+sucesion[i-1] + } + sucesion.shift(); + return sucesion; + } + + } -module.exports = fibonacci; \ No newline at end of file +module.exports = fibonacci; diff --git a/src/primalidad.js b/src/primalidad.js index 8bdb849..80e145a 100644 --- a/src/primalidad.js +++ b/src/primalidad.js @@ -1,5 +1,11 @@ const trialDivision = (number) => { - // your code here + + if(number <= 0 || number == 4 || number == 1 || number%1!=0 ) return false; + for(var i=2;i