7 Ejercicio 2
Aquí tienes el post estructurado y formateado para compartir:
📌 Ejercicio: Suma de Pares de Números
Hoy os propongo resolver este ejercicio donde crearemos una función que encuentre pares de números en una lista que, al sumarlos, den un valor objetivo.
📝 Enunciado:
Entrada: Una lista de números (ej. [1, 3, 2, 2]) y un valor objetivo (ej. 4).
Salida:
Número de tuplas de pares que suman el objetivo.
Mostrar las tuplas por pantalla (ej. (1, 3) y (2, 2)).
🔍 Ejemplo:
python
lista = [1, 3, 2, 2]
objetivo = 4
# Salida esperada:
# (1, 3)
# (2, 2)
# 2 # Número de tuplas
💡 Solución Propuesta:
python
def suma_de_pares(numeros, suma):
if len(numeros) < 2:
return 0
vistos = set()
salida = set()
for numero in numeros:
objetivo = suma - numero
if objetivo not in vistos:
vistos.add(numero)
else:
salida.add((min(numero, objetivo), max(numero, objetivo)))
for tupla in salida:
print(tupla)
return len(salida)
# Prueba
lista = [1, 3, 2, 2]
print("Número de tuplas:", suma_de_pares(lista, 4))
🛠️ Explicación:
Validación: Si la lista tiene menos de 2 elementos, retorna 0.
Conjuntos auxiliares:
vistos: Almacena números ya procesados.
salida: Guarda las tuplas válidas (evitando duplicados).
Bucle principal:
Calcula el objetivo (valor faltante para alcanzar la suma).
Si el objetivo no está en vistos, añade el número actual.
Si está, agrega la tupla ordenada (mín, máx) a salida.
Resultados: Imprime las tuplas y retorna su cantidad.
⏳ ¿Cómo funciona paso a paso?
Para numero = 1:
objetivo = 4 - 1 = 3 → No está en vistos → Añade 1 a vistos.
Para numero = 3:
objetivo = 4 - 3 = 1 → Sí está en vistos → Añade (1, 3) a salida.
Para numero = 2:
objetivo = 4 - 2 = 2 → No está → Añade 2 a vistos.
Para numero = 2 (segundo 2):
objetivo = 2 → Sí está → Añade (2, 2) a salida.
✅ Resultado final:
python
(1, 3)
(2, 2)
Número de tuplas: 2
🎯 ¿Te animas a probarlo con otras listas? ¡Comparte tus resultados en los comentarios
Comentarios
Publicar un comentario