diff --git a/Retos/Reto #37 - COLORES HEX Y RGB [Media]/python/majinka10.py b/Retos/Reto #37 - COLORES HEX Y RGB [Media]/python/majinka10.py new file mode 100644 index 0000000000..1e27e38550 --- /dev/null +++ b/Retos/Reto #37 - COLORES HEX Y RGB [Media]/python/majinka10.py @@ -0,0 +1,65 @@ +#Tabla de conversion. +#La clave corresponde a su conversión en decimal y el valor a hexadecimal. +conversion={0:0, 1:1, 2:2, 3:3, 4:4, 5:5, 6:6, 7:7, 8:8, + 9:9, 10:'A', 11:'B', 12:'C', 13:'D', 14:'E', 15:'F'} + +valores = list(conversion.values()) # Consigo los valores de la tabla para trabajar +# con ellos facilmente luego + +# Conversión de HEX a RGB + +def HEX2RGB(hex:str): + """ + Transforma un color HEX a RGB. + + Args: + - hex (str): Color en formato HEX a convertir. + Returns: + - rgb (list): Lista con el valor de cada uno de los canales (red, blue, green). + """ + + # Obtengo los valores hex correspondientes a cada canal. + red = hex[1:3] + green = hex[3:5] + blue = hex[5:] + + rgb = [] # Inicializo una lista vacía que guardará el valor decimal de cada color. + + # En el siguiente for se itera cada valor hexagecimal de cada canal. + for hexa in red, green, blue: + + # Esta super linea lo que hace es iterar en hexa (valor hexagecimal) y luego + # obtiene el valor decimal de la tabla de conversión, lo multiplica por 16 elevado + # al indice (proceso de conversión de hexagecimal a decimal) y por ultimo lo agrega a la lista rgb. + rgb.append(sum((valores.index(valor) if valor in valores else valor.index(str(valor))) * 16 ** i for i, valor in enumerate(hexa[::-1]))) + + return rgb + +ejemplo_hex = '#000000' +color_rgb = HEX2RGB(ejemplo_hex) +print(f"r: {color_rgb[0]}, g: {color_rgb[1]}, b: {color_rgb[2]}") + +# Conversión de RGB a HEX + +def RGB2HEX(red:int, green:int, blue:int): + """ + Transforma un color RGB a HEX. + + Args: + - red (int): Valor del canal rojo. + - green (int): Valor del canal verde. + - blue (int): Valor del canal azul. + Returns: + - hexadecimal (str): Color en formato HEX. + """ + + hexadecimal = '#' + + for decimal in red, green, blue: + hexadecimal += str(hex(decimal)[2:]) + + return hexadecimal + +ejemplo_rgb = [0, 0, 0] +color_hex = RGB2HEX(ejemplo_rgb[0], ejemplo_rgb[1], ejemplo_rgb[2]) +print(color_hex) diff --git a/Retos/Reto #38 - LAS SUMAS [Media]/python/majinka10.py b/Retos/Reto #38 - LAS SUMAS [Media]/python/majinka10.py new file mode 100644 index 0000000000..72215c6964 --- /dev/null +++ b/Retos/Reto #38 - LAS SUMAS [Media]/python/majinka10.py @@ -0,0 +1,35 @@ +def sumaObjetivo(numeros:list, objetivo:int): + """ + Encuentra todas las combinaciones de los números de una + lista que suman el valor objetivo. + + Args: + - numeros (list): Lista de numeros, enteros positivos, de la que quiero + encontrar las combinaciones. + - objetivo (int): Valor entero positivo objetivo. + Returns: + - combinaciones (list): Lista con las combinaciones encontradas. + """ + # Caso base de la recursión (que la suma de la lista sea el numero) + if sum(numeros) == objetivo: + return [numeros] + + # Defino la lista donde guardadaré las combinaciones + combinaciones = [] + + for i in range(len(numeros)): + # Evaluo cada lista posible + resto_numeros = numeros[:i] + numeros[i+1:] + # Encuentro las listas que cumplen + combinaciones_resto = sumaObjetivo(resto_numeros, objetivo) + + # Para cada combinacion encontrada, si no está en las combinaciones, la añado + # el if lo aplico para evitar listas repetidas + for combinacion in combinaciones_resto: + if combinacion not in combinaciones: + combinaciones.append(combinacion) + + return combinaciones + +resultado = sumaObjetivo([1, 5, 3, 2, 3, 6], 6) +print(f"Soluciones: {resultado}") \ No newline at end of file