From c33736539522d7422ac111d5a89c32dd2a461169 Mon Sep 17 00:00:00 2001 From: jelambrar96 Date: Sat, 23 Mar 2024 00:36:30 -0500 Subject: [PATCH] jelambrar96_reto_38_python --- .../python/jelambrar96.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Retos/Reto #38 - LAS SUMAS [Media]/python/jelambrar96.py diff --git a/Retos/Reto #38 - LAS SUMAS [Media]/python/jelambrar96.py b/Retos/Reto #38 - LAS SUMAS [Media]/python/jelambrar96.py new file mode 100644 index 0000000000..f83db387c9 --- /dev/null +++ b/Retos/Reto #38 - LAS SUMAS [Media]/python/jelambrar96.py @@ -0,0 +1,47 @@ +#!/usr/bin/python3 + +# ``` +# /* +# * Crea una función que encuentre todas las combinaciones de los números +# * de una lista que suman el valor objetivo. +# * - La función recibirá una lista de números enteros positivos +# * y un valor objetivo. +# * - Para obtener las combinaciones sólo se puede usar +# * una vez cada elemento de la lista (pero pueden existir +# * elementos repetidos en ella). +# * - Ejemplo: Lista = [1, 5, 3, 2], Objetivo = 6 +# * Soluciones: [1, 5] y [1, 3, 2] (ambas combinaciones suman 6) +# * (Si no existen combinaciones, retornar una lista vacía) +# */ +# ``` + +__author__ = "Jorge Lambraño - jelambrar96" +__copyright__ = "Copyright 2024, retos-programacion-2023" +__credits__ = ["Brais Moure - mouredev"] +__license__ = "GPL" +__version__ = "1.0.1" +__maintainer__ = "Jorge Lambraño" +__email__ = "jelambrar@gmail.com" +__status__ = "Production" + + + +from itertools import combinations + +def suma_lista(lista, objetivo): + soluciones = [] + len_lista = len(lista) + for i in range(1, len_lista): + for item in combinations(lista, i): + if sum(item) == objetivo: + soluciones.append(list(item)) + return soluciones + + +if __name__ == '__main__': + lista = [1, 5, 3, 2] + objetivo = 6 + soluciones = suma_lista(lista, objetivo) + print("soluciones") + for item in soluciones: + print(item)