diff --git a/Roadmap/18 - CONJUNTOS/c#/SBS24.cs b/Roadmap/18 - CONJUNTOS/c#/SBS24.cs new file mode 100644 index 0000000000..53e6c07bdc --- /dev/null +++ b/Roadmap/18 - CONJUNTOS/c#/SBS24.cs @@ -0,0 +1,87 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Conjuntos +{ + internal class Program + { + static void Main(string[] args) + { + /* + * EJERCICIO: + * Utilizando tu lenguaje crea un conjunto de datos y realiza las siguientes + * operaciones (debes utilizar una estructura que las soporte):*/ + List conjuntos = new List(); + conjuntos.Add("casa"); + conjuntos.Add("coche"); + conjuntos.Add("llaves"); + + List conjuntos2 = new List(); + conjuntos2.Add("casa2"); + conjuntos2.Add("coche"); + conjuntos2.Add("llaves2"); + + List conjuntos3 = new List(); + conjuntos3.Add("casa3"); + conjuntos3.Add("coche3"); + conjuntos3.Add("llaves3"); + + List conjuntos4 = new List(); + conjuntos4.Add("casa4"); + conjuntos4.Add("coche4"); + conjuntos4.Add("llaves4"); + + /* - Añade un elemento al final.*/ + conjuntos.Add("final"); + + /* - Añade un elemento al principio.*/ + conjuntos.Insert(0, "principio"); + + /* - Añade varios elementos en bloque al final.*/ + conjuntos.AddRange(conjuntos2); + + /* - Añade varios elementos en bloque en una posición concreta.*/ + conjuntos.InsertRange(3, conjuntos3);//pendiente de que lo inserte en una posición concreta + + /* - Elimina un elemento en una posición concreta.*/ + conjuntos.RemoveRange(1, 1);//borra 1 elemento (casa) que esta en la posición 1 + + /* - Actualiza el valor de un elemento en una posición concreta.*/ + conjuntos[5] = "Posicion actualizada 5"; + /* - Comprueba si un elemento está en un conjunto.*/ + if (conjuntos.IndexOf("casa2") != -1) + { + Console.WriteLine("El elemento está en la posición " + (conjuntos.IndexOf("casa2") + 1)); + } + else + { + Console.WriteLine("El elemento no está en la lista"); + } + + /* - Elimina todo el contenido del conjunto.*/ + conjuntos4.RemoveRange(0, (conjuntos4.Count() - 1)); + + /* + /* DIFICULTAD EXTRA (opcional): + /* Muestra ejemplos de las siguientes operaciones con conjuntos: + /* - Unión.*/ + conjuntos2 = conjuntos2.Concat(conjuntos4).ToList(); + + /* - Intersección.*/ + IEnumerable both = conjuntos.Intersect(conjuntos2); + + /* - Diferencia.*/ + var diferencias = conjuntos.Except(conjuntos2); + var diferencias2 = conjuntos2.Except(conjuntos); + + /* - Diferencia simétrica.*/ + var primer_conjunto = conjuntos.ToHashSet(); + primer_conjunto.SymmetricExceptWith(conjuntos2); + var dif_simetrica = primer_conjunto.ToList(); + + } + } +} diff --git a/Roadmap/18 - CONJUNTOS/javascript/AChapeton.js b/Roadmap/18 - CONJUNTOS/javascript/AChapeton.js new file mode 100644 index 0000000000..f5fe9accb1 --- /dev/null +++ b/Roadmap/18 - CONJUNTOS/javascript/AChapeton.js @@ -0,0 +1,85 @@ +const letters = ['a', 'b', 'c', 'd'] +console.log('Original', letters) +// Añade un elemento al final. +letters.push('e') +console.log('Añade un elemento al final', letters) + +// Añade un elemento al principio. +letters.unshift('-') +console.log('Añade un elemento al principio', letters) + +// Añade varios elementos en bloque al final. +const newLetters = ['x', 'y', 'z'] +letters.push(...newLetters) +console.log('Añade varios elementos en bloque al final', letters) + +// Añade varios elementos en bloque en una posición concreta. +const newLetters2 = ['f', 'g', 'h'] +letters.splice(6, 0, ...newLetters2) +console.log('Añade varios elementos en bloque en una posición concreta', letters) + +// Elimina un elemento en una posición concreta. +letters.splice(5, 1) +console.log('Elimina un elemento en una posición concreta', letters) + +// Actualiza el valor de un elemento en una posición concreta. +letters[1] = '#' +console.log('Actualiza el valor de un elemento en una posición concreta', letters) + +// Comprueba si un elemento está en un conjunto. +const isAinArray = letters.find(letter => letter === 'a' ? true : false) +console.log(' Comprueba si el elemento -a- está en el conjunto letters', isAinArray) +const isXinArray = letters.find(letter => letter === 'x' ? true : false) +console.log(' Comprueba si el elemento -x- está en el conjunto letters', isXinArray) + +// Elimina todo el contenido del conjunto. +letters.length = 0 +console.log('Elimina todo el contenido del conjunto', letters) + + +// DIFICULTAD EXTRA + +// Union de conjuntos +const first = [1, 2, 3, 4] +const second = [3, 4, 5, 6] +const union = new Set() + +first.forEach(number => union.add(number)) +second.forEach(number => union.add(number)) + +console.log('Union', union) + +// Interseccion +const interseccion = new Set() +first.forEach(n1 => { + second.forEach(n2 => { + if(n1 === n2){ + interseccion.add(n1) + } + }) +}) + +console.log('Interseccion', interseccion) + +// Diferencia +const diferencia = new Set() +first.forEach(number => diferencia.add(number)) +second.forEach(number => { + if (diferencia.has(number)){ + diferencia.delete(number) + } +}) +console.log('Diferencia', diferencia) + + +// Diferencia simetrica +const simetrica = new Set() +first.forEach(number => simetrica.add(number)) +second.forEach(number => { + if(simetrica.has(number)){ + simetrica.delete(number) + }else{ + simetrica.add(number) + } +}) +console.log('Diferencia simetrica', simetrica) diff --git a/Roadmap/18 - CONJUNTOS/python/AChapeton.py b/Roadmap/18 - CONJUNTOS/python/AChapeton.py new file mode 100644 index 0000000000..ebd23b5cd4 --- /dev/null +++ b/Roadmap/18 - CONJUNTOS/python/AChapeton.py @@ -0,0 +1,65 @@ +letters = ['a', 'b', 'c', 'd'] +print('Original', letters) + +# Añade un elemento al final. +letters.append('e') +print('Añade un elemento al final', letters) + +# Añade un elemento al principio. +letters.insert(0, '-') +print('Añade un elemento al principio', letters) + +# Añade varios elementos en bloque al final. +newLetters = ['x', 'y', 'z'] +letters.extend(newLetters) +print('Añade varios elementos en bloque al final', letters) + +# Añade varios elementos en bloque en una posición concreta. +newLetters2 = ['f', 'g', 'h'] +for letter in reversed(newLetters2): + letters.insert(6, letter) +print('Añade varios elementos en bloque en una posición concreta', letters) + +# Elimina un elemento en una posición concreta. +letters.pop(5) +print('Elimina un elemento en una posición concreta', letters) + +# Actualiza el valor de un elemento en una posición concreta. +letters[1] = '#' +print('Actualiza el valor de un elemento en una posición concreta', letters) + +# Comprueba si un elemento está en un conjunto. +try: + print('Comprueba si el elemento -a- está en el conjunto letters (buscar posicion)', letters.index('a')) +except ValueError: + print('El elemento -a- no existe') + +try: + print('Comprueba si el elemento -b- está en el conjunto letters (buscar posicion)', letters.index('b')) +except ValueError: + print('El elemento -a- no existe') + +# Elimina todo el contenido del conjunto. +letters.clear() +print('Elimina todo el contenido del conjunto', letters) + + +# DIFICULTAD EXTRA\ + +# Union +first ={1, 2, 3, 4} +second = {3, 4, 5, 6} +union = first.union(second) +print('Union', union) + +# Interseccion +interseccion = first.intersection(second) +print('Interseccion', interseccion) + +# Diferencia +interseccion = first.difference(second) +print('Diferencia', interseccion) + +# Diferencia simetrica +interseccion = first.symmetric_difference(second) +print('Diferencia simetrica', interseccion) \ No newline at end of file diff --git a/Roadmap/18 - CONJUNTOS/typescript/AChapeton.ts b/Roadmap/18 - CONJUNTOS/typescript/AChapeton.ts new file mode 100644 index 0000000000..1a5a8f25c2 --- /dev/null +++ b/Roadmap/18 - CONJUNTOS/typescript/AChapeton.ts @@ -0,0 +1,85 @@ +const letters: Array = ['a', 'b', 'c', 'd'] +console.log('Original', letters) +// Añade un elemento al final. +letters.push('e') +console.log('Añade un elemento al final', letters) + +// Añade un elemento al principio. +letters.unshift('-') +console.log('Añade un elemento al principio', letters) + +// Añade varios elementos en bloque al final. +const newLetters: Array = ['x', 'y', 'z'] +letters.push(...newLetters) +console.log('Añade varios elementos en bloque al final', letters) + +// Añade varios elementos en bloque en una posición concreta. +const newLetters2: Array = ['f', 'g', 'h'] +letters.splice(6, 0, ...newLetters2) +console.log('Añade varios elementos en bloque en una posición concreta', letters) + +// Elimina un elemento en una posición concreta. +letters.splice(5, 1) +console.log('Elimina un elemento en una posición concreta', letters) + +// Actualiza el valor de un elemento en una posición concreta. +letters[1] = '#' +console.log('Actualiza el valor de un elemento en una posición concreta', letters) + +// Comprueba si un elemento está en un conjunto. +const isAinArray = letters.find(letter => letter === 'a' ? true : false) +console.log(' Comprueba si el elemento -a- está en el conjunto letters', isAinArray) +const isXinArray = letters.find(letter => letter === 'x' ? true : false) +console.log(' Comprueba si el elemento -x- está en el conjunto letters', isXinArray) + +// Elimina todo el contenido del conjunto. +letters.length = 0 +console.log('Elimina todo el contenido del conjunto', letters) + + +// DIFICULTAD EXTRA + +// Union de conjuntos +const first: Array = [1, 2, 3, 4] +const second: Array = [3, 4, 5, 6] +const union: Set = new Set() + +first.forEach(number => union.add(number)) +second.forEach(number => union.add(number)) + +console.log('Union', union) + +// Interseccion +const interseccion: Set = new Set() +first.forEach(n1 => { + second.forEach(n2 => { + if(n1 === n2){ + interseccion.add(n1) + } + }) +}) + +console.log('Interseccion', interseccion) + +// Diferencia +const diferencia: Set = new Set() +first.forEach(number => diferencia.add(number)) +second.forEach(number => { + if (diferencia.has(number)){ + diferencia.delete(number) + } +}) +console.log('Diferencia', diferencia) + + +// Diferencia simetrica +const simetrica: Set = new Set() +first.forEach(number => simetrica.add(number)) +second.forEach(number => { + if(simetrica.has(number)){ + simetrica.delete(number) + }else{ + simetrica.add(number) + } +}) +console.log('Diferencia simetrica', simetrica)