Skip to content

Commit

Permalink
Merge pull request #5650 from Majinka10/main
Browse files Browse the repository at this point in the history
Reto #37 & #38 - Python
  • Loading branch information
Roswell468 authored Nov 8, 2023
2 parents 1290813 + 54f4fc2 commit b29d5e9
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 0 deletions.
65 changes: 65 additions & 0 deletions Retos/Reto #37 - COLORES HEX Y RGB [Media]/python/majinka10.py
Original file line number Diff line number Diff line change
@@ -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)
35 changes: 35 additions & 0 deletions Retos/Reto #38 - LAS SUMAS [Media]/python/majinka10.py
Original file line number Diff line number Diff line change
@@ -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}")

0 comments on commit b29d5e9

Please sign in to comment.