Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # n!/k!(n-k)!
- def combinations(n, k):
- if k > n/2:
- return combinations(n, n-k)
- result = 1
- for i in range(0, k):
- result *= (n-i)
- result //= (i+1)
- return result
- # zwraca liczbę elementów w poszukiwanej kombinacji
- # i numer kombinacji o tej liczbie elementow
- def liczba_elementow(n, i):
- k = 1
- while i >= combinations(n, k):
- i -= combinations(n, k)
- k += 1
- return k, i
- # zwraca kombinację k-elementową o indeksie i spośród n elementów, z najmniejszym elementem równym
- # start
- def kombinacja1(n, k, i, start):
- if k == 1:
- return str(start + i)
- if i < combinations(n-1, k-1):
- return str(start) + kombinacja1(n-1, k-1, i, start+1)
- else:
- return kombinacja1(n-1, k, i - combinations(n-1, k-1), start+1)
- # zwraca kombinację o indeksie i spośród n elementów
- def kombinacja(n, i):
- k, i2 = liczba_elementow(n, i)
- return kombinacja1(n, k, i2, 1)
- # test
- for i in range(0, 32):
- print(kombinacja(5, i))
Advertisement
Add Comment
Please, Sign In to add comment