Podzbiory ze zbioru rekurencyjnie

0

Cześć. Potrzebuje pomocy w kodzie do pythona. Potrzebuje program który będzie wypisywał wszystkie podzbiory ze zbioru. Użytkownik będzie wpisywał jak długi ma być ten zbiór. Mam to zrobić na jednej pętli. Znalazłem taki kod:

void podzbiory(unsigned n,unsigned k,unsigned tab[])
{
if(k) for(--k;n>0;podzbiory(--n,k,tab)) tab[k]=n;
else wypisz(tab,k);
}

Jednak nie wiem jak to przerobić na pythona chyba void na def. Ale nie wiem co z unsigned.

1

Unsigned to są zmienne typu całkowitego bez znaku.

1

Twój kod w C, w ogóle działa? Taki mam rekurencyjny w Pythonie:

def powerset(xs):
    if len(xs) <= 1:
        yield xs
        yield []
    else:
        for item in powerset(xs[1:]):
            yield [xs[0]]+item
            yield item

print(list(powerset([1, 2, 3])))
1

Bardziej po pythonowemu to np. (zależy czy chcesz z powtórzeniami itd. ale generalnie to tak)

import itertools 
from itertools import combinations, chain 
  
def findsubsets(s, n): 
    return list(map(set, itertools.combinations(s, n))) 
      
s = {1, 2, 3} 
n = 2
  
print(findsubsets(s, n)) 

Kod stąd: https://www.geeksforgeeks.org/python-program-to-get-all-subsets-of-given-size-of-a-set/ masz tu też inne przykłady

1 użytkowników online, w tym zalogowanych: 0, gości: 1