From 43ac96b73527b61c428fc4075a48f1332d4727e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Laslas?= <122316536+Nicolaslaslass@users.noreply.github.com> Date: Sat, 29 Jul 2023 22:57:41 -0400 Subject: [PATCH 1/8] Reto #30 - Python Reto #30 - Python --- .../python/Nicolaslaslass.py.py | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Retos/Reto #30 - EL TECLADO T9 [Media]/python/Nicolaslaslass.py.py diff --git a/Retos/Reto #30 - EL TECLADO T9 [Media]/python/Nicolaslaslass.py.py b/Retos/Reto #30 - EL TECLADO T9 [Media]/python/Nicolaslaslass.py.py new file mode 100644 index 0000000000..2611dbe509 --- /dev/null +++ b/Retos/Reto #30 - EL TECLADO T9 [Media]/python/Nicolaslaslass.py.py @@ -0,0 +1,58 @@ +# * Los primeros dispositivos móviles tenían un teclado llamado T9 +# * con el que se podía escribir texto utilizando únicamente su +# * teclado numérico (del 0 al 9). +# * +# * Crea una función que transforme las pulsaciones del T9 a su +# * representación con letras. +# * - Debes buscar cuál era su correspondencia original. +# * - Cada bloque de pulsaciones va separado por un guión. +# * - Si un bloque tiene más de un número, debe ser siempre el mismo. +# * - Ejemplo: +# * Entrada: 6-666-88-777-33-3-33-888 +# * Salida: MOUREDEV +# */ + + +t9_dict = {'2': 'A', '22': 'B', '222': 'C', '3': 'D', '33': 'E', '333': 'F', '4': 'G', '44': 'H', '444': 'I', '5': 'J', '55': 'K', '555':'L', '6':'M', '66':'N', '666': 'O', + '7': 'P', '77': 'Q', '777': 'R', '7777': 'S', '8': 'T', '88': 'U', '888': 'V', '9':'W', '99': 'X', '999':'Y', '9999':'Z'} + +entrada = input('Entrada:') + +def separador(entrada): + + letra = entrada.split('-') #el metodo split ya crea una lista por si misma. + return letra + +def t9_to_text(entrada): + + lista_convertida = separador(entrada) # + t9_list = [] + + for i in lista_convertida: + if i in t9_dict.keys(): + t9_list.append(t9_dict[i]) + elif i not in t9_dict.keys(): + print('secuencia no valida') + break + + t9_word = ''.join(t9_list) #recordar que exite join + return t9_word + +print(t9_to_text(entrada)) + + + + + + + + + + + + + + + + + From 589828c0dda0d5a87d7f609e1a514ac85e4291e5 Mon Sep 17 00:00:00 2001 From: Majinka10 Date: Sat, 29 Jul 2023 22:46:40 -0500 Subject: [PATCH 2/8] Retos 28 al 30 - Python --- .../python/majinka10.py" | 15 +++++++++++++++ .../python/majinka10.py" | 13 +++++++++++++ .../python/majinka10.py | 13 +++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 "Retos/Reto #28 - EXPRESI\303\223N MATEM\303\201TICA [Media]/python/majinka10.py" create mode 100644 "Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/python/majinka10.py" create mode 100644 Retos/Reto #30 - EL TECLADO T9 [Media]/python/majinka10.py diff --git "a/Retos/Reto #28 - EXPRESI\303\223N MATEM\303\201TICA [Media]/python/majinka10.py" "b/Retos/Reto #28 - EXPRESI\303\223N MATEM\303\201TICA [Media]/python/majinka10.py" new file mode 100644 index 0000000000..d68431abe2 --- /dev/null +++ "b/Retos/Reto #28 - EXPRESI\303\223N MATEM\303\201TICA [Media]/python/majinka10.py" @@ -0,0 +1,15 @@ +import re + +patron = re.compile(r'-?\d+(\.\d+)?\s*[+\-*/%]\s*-?\d+(\.\d+)?(?:\s*[+\-*/%]\s*-?\d+(\.\d+)?)?') + +def evaluador(expresion:str): + match = patron.search(expresion) + if match: + return True + else: + return False + + +print(evaluador('5 + 6 / 7 - 4')) +print(evaluador('5 a 3')) +print(evaluador('3.2 % 3 + 5 - 3 / 2')) \ No newline at end of file diff --git "a/Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/python/majinka10.py" "b/Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/python/majinka10.py" new file mode 100644 index 0000000000..37c4a3f113 --- /dev/null +++ "b/Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/python/majinka10.py" @@ -0,0 +1,13 @@ +def infiltrado(texto1:str,texto2:str): + infiltrados=[] + if len(texto1) == len(texto2): + for tupla in zip(texto1,texto2): + if tupla[0] != tupla[1]: + infiltrados.append(tupla[0]) + else: + return print('Los textos no tienen el mismo tamaño') + return print(infiltrados) + +infiltrado('abc','abdc') +infiltrado('Me llamo mouredev','Me llemo mouredov') +infiltrado('Me llamo.Brais Moure','Me llamo brais moure') \ No newline at end of file diff --git a/Retos/Reto #30 - EL TECLADO T9 [Media]/python/majinka10.py b/Retos/Reto #30 - EL TECLADO T9 [Media]/python/majinka10.py new file mode 100644 index 0000000000..a7459de500 --- /dev/null +++ b/Retos/Reto #30 - EL TECLADO T9 [Media]/python/majinka10.py @@ -0,0 +1,13 @@ +t9_dict={'1':',','11':'.','111':'?','1111':'!','2':'A','22':'B','222':'C','3':'D','33':'E','333':'F','4':'G','44':'H','444':'I','5':'J','55':'K','555':'L','6':'M','66':'N','666':'O','7':'P','77':'Q','777':'R','7777':'S','8':'T','88':'U','888':'V','9':'W','99':'X','999':'Y','9999':'Z','0':' '} + +def convert_to_t9(texto:str): + texto=texto.split('-') + text_t9='' + for bloque in texto: + if bloque in t9_dict: + text_t9+=t9_dict[bloque] + else: + return print('Bloque de números no encontrado') + return print(text_t9) + +convert_to_t9('44-666-555-2-0-555-444-66-3-88-777-2-1111') \ No newline at end of file From 3d13fa28e9aa295e45b8ffa9da2816e87adc67b7 Mon Sep 17 00:00:00 2001 From: Sejusa <110556472+Sejusa@users.noreply.github.com> Date: Sun, 30 Jul 2023 11:51:31 +0200 Subject: [PATCH 3/8] Sejusa.cs --- .../c#/Sejusa.cs | 88 +++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Retos/Reto #30 - EL TECLADO T9 [Media]/c#/Sejusa.cs diff --git a/Retos/Reto #30 - EL TECLADO T9 [Media]/c#/Sejusa.cs b/Retos/Reto #30 - EL TECLADO T9 [Media]/c#/Sejusa.cs new file mode 100644 index 0000000000..0fc6e1bc8c --- /dev/null +++ b/Retos/Reto #30 - EL TECLADO T9 [Media]/c#/Sejusa.cs @@ -0,0 +1,88 @@ +namespace Reto_30 +{ + internal class Program + { + static Dictionary t9 = new Dictionary() + { + {"1", "@"}, + {"2", "a"}, + {"22", "b"}, + {"222", "c"}, + {"3", "d"}, + {"33", "e"}, + {"333", "f"}, + {"4", "g"}, + {"44", "h"}, + {"444", "i"}, + {"5", "j"}, + {"55", "k"}, + {"555", "l"}, + {"6", "m"}, + {"66", "n"}, + {"666", "o"}, + {"7", "p"}, + {"77", "q"}, + {"777", "r"}, + {"7777", "s"}, + {"8", "t"}, + {"88", "u"}, + {"888", "v"}, + {"9", "w"}, + {"99", "x"}, + {"999", "y"}, + {"9999", "z"}, + {"0", " "}, + {"-", ""} + }; + + static void Main(string[] args) + { + string start = ""; + Console.WriteLine("Pulse ENTER para empezar, o cualquier otra letra para cerrar."); + + while (start == "") + { + Console.WriteLine("Bienvenido al teclado T9."); + Console.WriteLine("Pulsa ENTER para continuar..."); + string enter = Console.ReadLine(); + + while (enter != "") + { + Console.WriteLine("¡Uepa! Debes de pulsar ENTER."); + enter = Console.ReadLine(); + } + + keyboardT9(); + Console.WriteLine("Pulse ENTER para escribir otro mensaje o cualquier otra letra para cerrar."); + start = Console.ReadLine(); + } + } + + static void keyboardT9() + { + Console.WriteLine("Escriba texto usando el teclado númerico (0-9). Si escribes solo un carácter, debes de finalizar con guón."); + Console.WriteLine("Ejemplos: \n4- = g \n44-666-555-2 = hola"); + Console.WriteLine("Esciba los números a traducir a continuación:"); + string input = Console.ReadLine(); + + while (t9.TryGetValue(input, out string numberKey)) //Si escribimos algo que no es un número o una "-" sola, da error y volvemos a pedir la entrada. + { + Console.WriteLine("¡Uepa! Debes de escibir un número como en el sistema T9."); + input = Console.ReadLine(); + } + + string[] message = input.Split("-"); //Transformamos el input en un arreglo de cadenas. Con el método Split(); las separamos mediante "-". + + string output = ""; + + for (int i=0; i Date: Sun, 30 Jul 2023 12:42:16 +0200 Subject: [PATCH 4/8] Reto#30-c# --- .../c#/JonAFernan.cs | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Retos/Reto #30 - EL TECLADO T9 [Media]/c#/JonAFernan.cs diff --git a/Retos/Reto #30 - EL TECLADO T9 [Media]/c#/JonAFernan.cs b/Retos/Reto #30 - EL TECLADO T9 [Media]/c#/JonAFernan.cs new file mode 100644 index 0000000000..8345722967 --- /dev/null +++ b/Retos/Reto #30 - EL TECLADO T9 [Media]/c#/JonAFernan.cs @@ -0,0 +1,75 @@ +using System.Text; +using System.Text.RegularExpressions; +/* + * Los primeros dispositivos móviles tenían un teclado llamado T9 + * con el que se podía escribir texto utilizando únicamente su + * teclado numérico (del 0 al 9). + * + * Crea una función que transforme las pulsaciones del T9 a su + * representación con letras. + * - Debes buscar cuál era su correspondencia original. + * - Cada bloque de pulsaciones va separado por un guión. + * - Si un bloque tiene más de un número, debe ser siempre el mismo. + * - Ejemplo: + * Entrada: 6-666-88-777-33-3-33-888 + * Salida: MOUREDEV + */ + + +namespace reto; +class Program +{ + static void Main(string[] args) + { + Console.WriteLine(T9KeyboardToText("6-666-88-777-33-3-33-888")); //MOUREDEV + Console.WriteLine(T9KeyboardToText("22-777-2-444-7777-0-33-7777-0-6-666-88-777-33-3-33-888-11")); //BRAIS ES MOUREDEV. + Console.WriteLine(T9KeyboardToText("666666-666-88-777-33-3-33-888")); //Error. Wrong text input. Wrong length. + Console.WriteLine(T9KeyboardToText("6-686-88-777-33-3-33-888")); //Error. Wrong text input. No number or if a block has more than one number, it must always be the same. + Console.WriteLine(T9KeyboardToText("6-686-88-777-33-3-33-")); //Error. Wrong text input. No number or if a block has more than one number, it must always be the same. + Console.WriteLine(T9KeyboardToText("6,686-88-777-33-3-33-888")); //Error. Wrong text input. Wrong text format. + + } + + static string T9KeyboardToText(string numbers) + { + if(!Regex.IsMatch(numbers,@"^(\d+(\-)?)*$")) return "Error. Wrong text input. Wrong text format."; + + string[][] t9 = new string[][] + { + new string[] {" "}, + new string[] {",", ".","!","?"}, + new string[] {"a", "b","c"}, + new string[] {"d", "e","f"}, + new string[] {"g", "h","i"}, + new string[] {"j", "k","l"}, + new string[] {"m", "n","o","ñ"}, + new string[] {"p", "q","r","s"}, + new string[] {"t", "u","v"}, + new string[] {"w", "x","y","z"}, + }; + + StringBuilder message= new StringBuilder(); + + string[] splitString = numbers.Split('-'); + + foreach (string item in splitString) + { + if(!Regex.IsMatch(item, @"^(\d)\1*$")) return "Error. Wrong text input. No number or if a block has more than one number, it must always be the same."; + + try + { + message.Append(t9[(int)Char.GetNumericValue(item[0])][item.Length - 1]); + } + catch (System.Exception) + { + + return "Error. Wrong text input. Wrong length."; + } + + } + + return message.ToString().ToUpper(); + } + + +} From bff6045133811f2d9e8252570d8830a64381f09a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesus=20Matilla=20Le=C3=B3n?= Date: Sun, 30 Jul 2023 12:59:36 +0200 Subject: [PATCH 5/8] Reto#29 - java --- .../java/jesusWay69.java" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 "Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/java/jesusWay69.java" diff --git "a/Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/java/jesusWay69.java" "b/Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/java/jesusWay69.java" new file mode 100644 index 0000000000..1133d3c159 --- /dev/null +++ "b/Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/java/jesusWay69.java" @@ -0,0 +1,47 @@ +package reto_29; + +import java.util.ArrayList; + +/** + * Crea una función que reciba dos cadenas de texto casi iguales, a excepción de + * uno o varios caracteres. La función debe encontrarlos y retornarlos en + * formato lista/array. - Ambas cadenas de texto deben ser iguales en longitud. + * - Las cadenas de texto son iguales elemento a elemento. - No se pueden + * utilizar operaciones propias del lenguaje que lo resuelvan directamente. + * + * Ejemplos: - Me llamo mouredev / Me llemo mouredov -> ["e", "o"] - Me + * llamo.Brais Moure / Me llamo brais moure -> [" ", "b", "m"] + * + * @author jesus + */ +public class jesusWay69 { + + public static void main(String[] args) { + String text1 = "hola mundo"; + String text2 = "Hola mubdO"; + comparator(text1, text2); + + } + + private static void comparator(String text1, String text2) { + + var differentCharacters = new ArrayList(); + + if (text1.length() == text2.length()) { + + for (int i = 0; i < text1.length(); i++) + + if ((text1.charAt(i) != text2.charAt(i))) + + differentCharacters.add(Character.toString(text2.charAt(i))); + + } + + if (differentCharacters.isEmpty()) System.out.println("Los 2 textos son idénticos o tienen diferente longitud"); + + else System.out.println(differentCharacters); + + + } + +} From 3cda86257202d1375be46b18be976f0da36f990a Mon Sep 17 00:00:00 2001 From: ShinMugenNoKabe Date: Sun, 30 Jul 2023 14:06:16 +0200 Subject: [PATCH 6/8] Reto #29 - Python --- .../python/ShinMugenNoKabe.py" | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 "Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/python/ShinMugenNoKabe.py" diff --git "a/Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/python/ShinMugenNoKabe.py" "b/Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/python/ShinMugenNoKabe.py" new file mode 100644 index 0000000000..b6bf819be2 --- /dev/null +++ "b/Retos/Reto #29 - EL CAR\303\201CTER INFILTRADO [F\303\241cil]/python/ShinMugenNoKabe.py" @@ -0,0 +1,33 @@ +# Crea una función que reciba dos cadenas de texto casi iguales, +# a excepción de uno o varios caracteres. +# La función debe encontrarlos y retornarlos en formato lista/array. +# - Ambas cadenas de texto deben ser iguales en longitud. +# - Las cadenas de texto son iguales elemento a elemento. +# - No se pueden utilizar operaciones propias del lenguaje +# que lo resuelvan directamente. +# +# Ejemplos: +# - Me llamo mouredev / Me llemo mouredov -> ["e", "o"] +# - Me llamo.Brais Moure / Me llamo brais moure -> [" ", "b", "m"] + +def find_differences(text1: str, text2: str) -> list[str]: + if text1 is None or text2 is None: + raise ValueError("Introduce un texto válido") + elif len(text1) != len(text2): + raise ValueError("Las cadenas de texto deben tener el mismo número de carácteres") + + return [char2 for char1, char2 in zip(text1, text2) if char1 != char2] + + +if __name__ == "__main__": + diff1 = find_differences("Me llamo mouredev", "Me llemo mouredov") + assert diff1 == ["e", "o"] + print(diff1) + + diff2 = find_differences("Me llamo.Brais Moure", "Me llamo brais moure") + assert diff2 == [" ", "b", "m"] + print(diff2) + + text1 = input("Introduce la primera cadena de carácteres: ") + text2 = input("Introduce la segunda cadena de carácteres: ") + print(find_differences(text1, text2)) \ No newline at end of file From d512d6b2cbd0d48eb6e5c89b40084087ca589789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jesus=20Matilla=20Le=C3=B3n?= Date: Sun, 30 Jul 2023 20:40:22 +0200 Subject: [PATCH 7/8] Reto#30 - java --- .../java/jesusWay69.java | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 Retos/Reto #30 - EL TECLADO T9 [Media]/java/jesusWay69.java diff --git a/Retos/Reto #30 - EL TECLADO T9 [Media]/java/jesusWay69.java b/Retos/Reto #30 - EL TECLADO T9 [Media]/java/jesusWay69.java new file mode 100644 index 0000000000..77c0a85bf3 --- /dev/null +++ b/Retos/Reto #30 - EL TECLADO T9 [Media]/java/jesusWay69.java @@ -0,0 +1,70 @@ +package reto_30; + +import java.util.HashMap; +import java.util.Map; + +/** + * * Los primeros dispositivos móviles tenían un teclado llamado T9 con el que + * se podía escribir texto utilizando únicamente su teclado numérico (del 0 al + * 9). + * + * Crea una función que transforme las pulsaciones del T9 a su representación + * con letras. - Debes buscar cuál era su correspondencia original. - Cada + * bloque de pulsaciones va separado por un guión. - Si un bloque tiene más de + * un número, debe ser siempre el mismo. - Ejemplo: Entrada: + * 6-666-88-777-33-3-33-888 Salida: MOUREDEV + * + * @author jesus + */ +public class jesusWay69 { + + public static void main(String[] args) { + + String keys = "44-33-555-555-666-0-9-666-777-555-3"; + alphabet_hm(keys); + + } + + private static void alphabet_hm(String keys) { + String text = ""; + + Map letters_hm = new HashMap(); + letters_hm.put("2", "A"); + letters_hm.put("22", "B"); + letters_hm.put("222", "C"); + letters_hm.put("3", "D"); + letters_hm.put("33", "E"); + letters_hm.put("333", "F"); + letters_hm.put("4", "G"); + letters_hm.put("44", "H"); + letters_hm.put("444", "I"); + letters_hm.put("5", "J"); + letters_hm.put("55", "K"); + letters_hm.put("555", "L"); + letters_hm.put("6", "M"); + letters_hm.put("66", "N"); + letters_hm.put("6666", "Ñ"); + letters_hm.put("666", "O"); + letters_hm.put("7", "P"); + letters_hm.put("77", "Q"); + letters_hm.put("777", "R"); + letters_hm.put("7777", "S"); + letters_hm.put("8", "T"); + letters_hm.put("88", "U"); + letters_hm.put("888", "V"); + letters_hm.put("9", "W"); + letters_hm.put("99", "X"); + letters_hm.put("999", "Y"); + letters_hm.put("9999", "Z"); + letters_hm.put("0", " "); + for (String key : keys.split("-")) { + if (letters_hm.containsKey(key)) { + + + text = text + letters_hm.get(key); + } + } + + System.out.println(text); + } +} From 7d7afff2012ac5457f16d3e717f955e33d937e4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Laslas?= <122316536+Nicolaslaslass@users.noreply.github.com> Date: Mon, 31 Jul 2023 09:27:30 -0400 Subject: [PATCH 8/8] Update and rename Nicolaslaslass.py.py to Nicolaslaslass.py --- .../python/{Nicolaslaslass.py.py => Nicolaslaslass.py} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Retos/Reto #30 - EL TECLADO T9 [Media]/python/{Nicolaslaslass.py.py => Nicolaslaslass.py} (100%) diff --git a/Retos/Reto #30 - EL TECLADO T9 [Media]/python/Nicolaslaslass.py.py b/Retos/Reto #30 - EL TECLADO T9 [Media]/python/Nicolaslaslass.py similarity index 100% rename from Retos/Reto #30 - EL TECLADO T9 [Media]/python/Nicolaslaslass.py.py rename to Retos/Reto #30 - EL TECLADO T9 [Media]/python/Nicolaslaslass.py