From 79e34c1bd88a2bd323cb44f08e0e618b7dd1afe4 Mon Sep 17 00:00:00 2001 From: WandaCirone Date: Mon, 14 Dec 2020 11:37:43 -0300 Subject: [PATCH] Agrega soluciones a ejercicios y tests --- 10-JS-Extra-Homeworks/homework/homework.js | 122 +++++++++++------- .../homework/tests/JSX.test.js | 99 ++++++++------ 2 files changed, 134 insertions(+), 87 deletions(-) diff --git a/10-JS-Extra-Homeworks/homework/homework.js b/10-JS-Extra-Homeworks/homework/homework.js index bc24367d0c..e75708c910 100644 --- a/10-JS-Extra-Homeworks/homework/homework.js +++ b/10-JS-Extra-Homeworks/homework/homework.js @@ -1,23 +1,14 @@ // No cambies los nombres de las funciones. -function palindromo(frase) { - //Definir una función que determine si la cadena de texto que se le pasa como parámetro es un palíndromo, - //es decir, si se lee de la misma forma desde la izquierda y desde la derecha. - //Ejemplo de palíndromo complejo: "La ruta nos aporto otro paso natural" ---> Devuelve true - //Tu código: - } - -// Escribe una función que convierta un objeto en una matriz, donde cada elemento representa -//un par clave-valor en forma de matriz. -//Ejemplo: -/*objecto({ - D: 1, - B: 2, - C: 3 - }) ➞ [["D", 1], ["B", 2], ["C", 3]]*/ - - function deObjetoAmatriz(objeto){ + // Escribe una función que convierta un objeto en una matriz, donde cada elemento representa + // un par clave-valor en forma de matriz. + //Ejemplo: + /*objeto({ + D: 1, + B: 2, + C: 3 + }) ➞ [["D", 1], ["B", 2], ["C", 3]]*/ //Escribe tu código aquí const arreglo =[] for( x in objeto){ @@ -26,32 +17,56 @@ function deObjetoAmatriz(objeto){ return arreglo } +function numberOfCharacters(string) { + //La función recibe un string. Recorre el srting y devuelve el caracter con el número de veces que aparece + //en formato par clave-valor. + //Ej: Recibe ---> "adsjfdsfsfjsdjfhacabcsbajda" || Devuelve ---> { a: 5, b: 2, c: 2, d: 4, f: 4, h:1, j: 4, s: 5 } + //Escribe tu código aquí + var obj = {} -//Realiza una función que reciba como parámetro un string y mueva todas las letras mayúsculas -// al principio de la palabra. -//Ejemplo: soyHENRY -> HENRYsoy + for (let i = 0; i < string.length; i++) { + if (Object.keys(obj).includes(string[i])) { + obj[string[i]] = obj[string[i]] + 1 + continue; + } + obj[string[i]] = 1 + } + return obj; +} function capToFront(s) { - //Escribe tu código aquí - let cadena=""; - let cadena2=""; - for( let i=0; i< s.length; i++){ + //Realiza una función que reciba como parámetro un string y mueva todas las letras mayúsculas + // al principio de la palabra. + //Ejemplo: soyHENRY -> HENRYsoy + //Escribe tu código aquí + let cadena=""; + let cadena2=""; + for( let i=0; i< s.length; i++){ if(s[i] === s[i].toUpperCase()){ cadena+=s[i]; }else{ cadena2+=s[i] } -} -return cadena.concat('', cadena2); + } + return cadena.concat('', cadena2); } - -//Escribe una función, la cual recibe un número y determina si es o no capicúa. -//La misma debe retornar: "Es capicua" si el número se número que se lee igual de -//izquierda a derecha que de derecha a izquierda. Caso contrario retorna "No es capicua" - +function asAmirror(str) { + //La función recibe una frase. + //Escribe una función que tome la frase recibida y la devuelva de modo tal que se pueda leer de izquierda a derecha + //pero con cada una de sus palabras invertidas, como si fuera un espejo. + //Ej: Recibe ---> "The Henry Challenge is close!" || Devuelve ---> "ehT yrneH egnellahC si !esolc" + //Escribe tu código aquí + var phrase = str.split(' ').map(function (item) { + return item.split('').reverse().join(''); + }).join(' '); + return phrase; +} function capicua(numero){ + //Escribe una función, la cual recibe un número y determina si es o no capicúa. + //La misma debe retornar: "Es capicua" si el número se número que se lee igual de + //izquierda a derecha que de derecha a izquierda. Caso contrario retorna "No es capicua" //Escribe tu código aquí let cadena= numero.toString(); let cadenaInvertida = ""; @@ -64,11 +79,9 @@ function capicua(numero){ } -//Define una función que elimine las letras "a", "b" y "c" de la cadena dada -//y devuelva la versión modificada o la misma cadena, en caso de contener dichas letras. - - function deleteAbc(cadena){ + //Define una función que elimine las letras "a", "b" y "c" de la cadena dada + //y devuelva la versión modificada o la misma cadena, en caso de contener dichas letras. //Escribe tu código aquí let cadena2=""; for(let i=0; i< cadena.length ; i++){ @@ -79,14 +92,27 @@ function deleteAbc(cadena){ return cadena2; } - -//Existen dos arrays, cada uno con 5 números. A partir de ello, escribir una función que permita -//retornar un nuevo array con la intersección de ambos elementos. (Ej: [4,2,3] unión [1,3,4] = [3,4]. -//Si no tienen elementos en común, retornar un arreglo vacío. -//Aclaración: los arreglos no necesariamente tienen la misma longitud - +function sortArray(arr) { + //La función recibe una matriz de strings. Ordena la matriz en orden creciente de longitudes de cadena + //Ej: Recibe ---> ["You", "are", "beautiful", "looking"] || Devuelve ---> [“You", "are", "looking", "beautiful"] + //Escribe tu código aquí + for (let i = 0; i < arr.length; i ++ ){ + var temp = arr[i] + var j = i - 1 + while (j >= 0 && temp.length < arr[j].length) { + arr[j+1] = arr[j] + j-- + } + arr[j+1] = temp +} + return arr; +} function buscoInterseccion(arreglo1, arreglo2){ + //Existen dos arrays, cada uno con 5 números. A partir de ello, escribir una función que permita + //retornar un nuevo array con la intersección de ambos elementos. (Ej: [4,2,3] unión [1,3,4] = [3,4]. + //Si no tienen elementos en común, retornar un arreglo vacío. + //Aclaración: los arreglos no necesariamente tienen la misma longitud //Escribe tu código aquí let arreglo =[] for(let i=0; i< arreglo1.length; i++){ @@ -104,10 +130,12 @@ function buscoInterseccion(arreglo1, arreglo2){ // -------------------------------- module.exports = { - deObjetoAmatriz, - capToFront, - capicua, - deleteAbc, - buscoInterseccion, - palindromo, + deObjetoAmatriz, + numberOfCharacters, + capToFront, + asAmirror, + capicua, + deleteAbc, + sortArray, + buscoInterseccion, }; \ No newline at end of file diff --git a/10-JS-Extra-Homeworks/homework/tests/JSX.test.js b/10-JS-Extra-Homeworks/homework/tests/JSX.test.js index c60ab12498..5d380d947e 100644 --- a/10-JS-Extra-Homeworks/homework/tests/JSX.test.js +++ b/10-JS-Extra-Homeworks/homework/tests/JSX.test.js @@ -1,56 +1,75 @@ /* eslint-disable no-undef */ const { - deObjetoAmatriz, - capToFront, - capicua, - deleteAbc, - buscoInterseccion, - palindromo + deObjetoAmatriz, + numberOfCharacters, + capToFront, + asAmirror, + capicua, + deleteAbc, + sortArray, + buscoInterseccion, } = require('../homework'); + describe('deObjetoAmatriz(objeto)', function() { - it('should return an array, where each element represents a key-value pair in the form of an array.', function() { - expect(deObjetoAmatriz({ x: 1, y: 2 })).toEqual([["x" , 1],["y" , 2]]); - expect(deObjetoAmatriz({ x: 10, y: 25 })).toEqual([["x" , 10],["y" , 25]]); - }); - }); +it('should return an array, where each element represents a key-value pair in the form of an array.', function() { + expect(deObjetoAmatriz({ x: 1, y: 2 })).toEqual([["x" , 1],["y" , 2]]); + expect(deObjetoAmatriz({ x: 10, y: 25 })).toEqual([["x" , 10],["y" , 25]]); +}); +}); + +describe('numberOfCharacters(string)', function() { +it('should return an object with the characters and the number of times they appear as a key-value pair', function() { + expect(numberOfCharacters("sktpwrroqstkrpwwsqtqopwktsd")).toEqual({s:4, k:3, t:4, p:3, w:4, r:3, o:2, q:3, d:1 }); + expect(numberOfCharacters("adsjfdsfsfjsdjfhacabcsbajda")).toEqual({ a: 5, b: 2, c: 2, d: 4, f: 4, h:1, j: 4, s: 5 }); +}); +}); describe('capToFront(s)', function() { - it('should return all capital letters at the beginning of the word.', function() { - expect(capToFront("soyHENRY")).toEqual("HENRYsoy"); - expect(capToFront("DESArrollaDOR")).toEqual("DESADORrrolla"); - }); - }); + it('should return all capital letters at the beginning of the word.', function() { + expect(capToFront("soyHENRY")).toEqual("HENRYsoy"); + expect(capToFront("DESArrollaDOR")).toEqual("DESADORrrolla"); +}); +}); + +describe('asAmirror(str)', function() { +it('should return the string recieved with all the words reversed as a mirror', function() { + expect(asAmirror("I love you so much!")).toBe("I evol uoy os !hcum"); + expect(asAmirror("The Henry Challenge is close!")).toBe("ehT yrneH egnellahC si !esolc"); +}); +}); describe('capicua(numero)', function() { - it('should return Es capicua if the number is read from right to left', function() { - expect(capicua(12321)).toEqual("Es capicua"); - expect(capicua(1111)).toEqual("Es capicua"); - expect(capicua(105217)).toEqual("No es capicua"); - expect(capicua(7878700)).toEqual("No es capicua"); +it('should return Es capicua if the number is read from right to left', function() { + expect(capicua(12321)).toEqual("Es capicua"); + expect(capicua(1111)).toEqual("Es capicua"); + expect(capicua(105217)).toEqual("No es capicua"); + expect(capicua(7878700)).toEqual("No es capicua"); - }); - }); +}); +}); describe('deleteAbc(cadena)', function() { - it('should return the modified string if it has the letters abc or the same string otherwise', function() { - expect(deleteAbc("abcefgh")).toEqual("efgh"); - expect(deleteAbc("abc")).toEqual(""); - expect(deleteAbc("plural")).toEqual("plurl"); - expect(deleteAbc("limon")).toEqual("limon"); - - }); - }); +it('should return the modified string if it has the letters abc or the same string otherwise', function() { + expect(deleteAbc("abcefgh")).toEqual("efgh"); + expect(deleteAbc("abc")).toEqual(""); + expect(deleteAbc("plural")).toEqual("plurl"); + expect(deleteAbc("limon")).toEqual("limon"); - describe('buscoInterseccion(arreglo1, arreglo2)', function() { - it('should return the common elements of the array, and in case they do not match, return an empty array', function() { - expect(buscoInterseccion([1, 2 , 3], [1, 5, 8 , 3])).toEqual([1, 3]); - expect(buscoInterseccion([7 , 23, 4], [23, 70])).toEqual([23]); - expect(buscoInterseccion([1, 20 , 3], [22, 5, 7])).toEqual([]); - }); - }); +}); +}); +describe('sortArray(array)', function() { +it('should return a new array in increasing order', function() { + expect(sortArray(["You", "are", "beautiful", "looking"])).toEqual(["You", "are", "looking", "beautiful"]); + expect(sortArray(["pera", "manzana", "alcaucil", "papa"])).toEqual(["pera", "papa", "manzana", "alcaucil"]); +}); +}); -describe('palindromo(frase)', function() { - it('should return true if the phrase recieved is a palindrome', function() {}); +describe('buscoInterseccion(arreglo1, arreglo2)', function() { +it('should return the common elements of the array, and in case they do not match, return an empty array', function() { + expect(buscoInterseccion([1, 2 , 3], [1, 5, 8 , 3])).toEqual([1, 3]); + expect(buscoInterseccion([7 , 23, 4], [23, 70])).toEqual([23]); + expect(buscoInterseccion([1, 20 , 3], [22, 5, 7])).toEqual([]); }); +}); \ No newline at end of file