-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathMerlin.py
41 lines (36 loc) · 1.06 KB
/
Merlin.py
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
34
35
36
37
38
39
40
41
def enumerações(items):
n = len(items)
s = [0]*(n+1)
k = 0
while True:
if s[k] < n:
s[k+1] = s[k] + 1
k += 1
else:
s[k-1] += 1
k -= 1
if k == 0: break
else:
lista = []
for j in range(1, k+1):
lista.append(items[s[j]-1])
yield lista
def combinações(items, n):
if n==0: yield []
else:
for i in range(len(items)):
for cc in combinações(items[:i]+items[i+1:],n-1):
yield [items[i]]+cc
def permutações(items):
return combinações(items, len(items))
##print ('Permutações')
##for p in permutações([1, 2, 3, 4, 5, 6]):
## print (p)
##
##print ('Enumerações')
##for p in enumerações([1, 2, 3, 4, 5, 6]):
## print (p)
##for p in permutações(['Adriano','Bruno', 'Diogo', 'Eclis', 'Gabriel', 'Leandro', 'Walber']):
## print (p)
##for p in enumerações(['Jessica', 'Fernanda', 'Pamela', 'Renata']):
## print (p)