-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkombinatorika.py
More file actions
33 lines (26 loc) · 934 Bytes
/
kombinatorika.py
File metadata and controls
33 lines (26 loc) · 934 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#variace, nekdy z drivejska na generovani hesel, mam nekde i v C
def variace(charlist, leng, repeat=False):
if leng == 1:
return [ i for i in charlist]
pws = []
tmp = variace(charlist, leng - 1, repeat)
for i in charlist:
for j in tmp:
if repeat or i not in j:
pws.append(i + j)
return pws
#kombinace - like a boss - lazy way, functional programming
# skoro one-liner
def kombinace(charlist, leng, repeat=False):
var_res = variace(charlist, leng, repeat)
return list(set(map(lambda x: "".join(sorted(list(x))), var_res)))
def permutace_1(charlist, passed):
if len(charlist) == 0:
print passed
for i in charlist:
reduced_chars = charlist[:]
reduced_chars.remove(i)
permutace_1(reduced_chars, passed + i)
print variace(['a','b','c','d'],3)
print len(variace(['a','b','c','d'],3))
print kombinace(['a','b','c','d'],3)