Last active
January 10, 2020 14:10
-
-
Save hpaul/611bb55cbbe81e47354517b37068ff72 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import itertools | |
A = 10 | |
L = [1, 4, 5, 6, 1, 1, 2, 3] | |
rezultat = [] | |
# `range` creaza o lista incepand de la primul argument pana la al doilea argument dar excluzandu-l [a, b) | |
# range(1, 2) returneaza `[1]` | |
# range(1, 3) returneaza `[1, 2]` | |
# `len` numara cate elemente sunt in lista | |
# Nu are sens sa formam combinatii de cate 1, asa ca pornim cu 2 | |
for i in range(2, len(L)): | |
# Creeaza combinatii din lista L folosind libraria integrata in python `itertools` | |
# pentru i = 2 functia returneaza lista cu combinatii posibile | |
# [(1,4),(1,5),(1,6),(1,1),(1,1),(1,2),(1,3), etc...] | |
# pentru i = 3 | |
# [(1,4,5),(1,4,6),(1,4,1), etc...] | |
combinatii = itertools.combinations(L, i) | |
# Pastreaza doar combinatiile ce implinesc conditia, adica suma elementelor egala cu A | |
# `filter` intereaza toate elementele din lista si verifica daca conditia din functie este adevarata | |
suma_egal_A = filter(lambda combinatie: sum(combinatie) == A, combinatii) | |
# Itereaza in rezultate si adauga in lista finala | |
for elem in suma_egal_A: | |
rezultat.append(elem) | |
print(rezultat) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment