alcular combinações de comprimento k de uma lista de comprimento n usando recursão
Preciso gerar todas as combinações com comprimentok
de uma lista de comprimenton
, e devo fazê-lo usando recursã
Por exemplo
INPUT: choose_sets([1,2,3,4],3)
OUTPUT: [[1,2,3],[1,2,4],[1,3,4],[2,3,4]]
INPUT: choose_sets([1,2,3,4],2)
OUTPUT: [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
Estou preso ao implementar isso no código, então ficaria feliz em receber alguma ajuda. Este é o meu código até agora (estou faltando algo, mas não sei o que):
def choose_sets(lst,k):
if k == len(lst):
return lst
if k == 0:
return []
if k > len(lst):
return []
sets=[]
sub_lst=lst[:]
sub_lst.remove(sub_lst[0])
a= choose_sets(sub_lst,k-1)
for i in a:
i.append(lst[0])
sets.append(a)
b= choose_sets(sub_lst,k)
sets.append(b)
return sets