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:

  1. Validación: Si la lista tiene menos de 2 elementos, retorna 0.

  2. Conjuntos auxiliares:

    • vistos: Almacena números ya procesados.

    • salida: Guarda las tuplas válidas (evitando duplicados).

  3. 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.

  4. Resultados: Imprime las tuplas y retorna su cantidad.

⏳ ¿Cómo funciona paso a paso?

  1. Para numero = 1:

    • objetivo = 4 - 1 = 3 → No está en vistos → Añade 1 a vistos.

  2. Para numero = 3:

    • objetivo = 4 - 3 = 1 → Sí está en vistos → Añade (1, 3) a salida.

  3. Para numero = 2:

    • objetivo = 4 - 2 = 2 → No está → Añade 2 a vistos.

  4. 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

Entradas más populares de este blog

5 Diccionarios

6 Ejercicio 1

2 Listas