Chciałbym znaleźć czysty i sprytny sposób (w pytonie), aby znaleźć wszystkie permutacje ciągów o długości 1s i 0s x chars. Idealnie byłoby to szybka i nie wymaga zbyt wielu iteracji robi ...wszystkie permutacje binarnej sekwencji x bitów długich
Tak, dla x = 1 Chcę: [ '0', '1'] x = 2 [ '00', '01 ”'10' , '11']
etc ..
teraz mam to, co jest powolne i wydaje nieeleganckie:
self.nbits = n
items = []
for x in xrange(n+1):
ones = x
zeros = n-x
item = []
for i in xrange(ones):
item.append(1)
for i in xrange(zeros):
item.append(0)
items.append(item)
perms = set()
for item in items:
for perm in itertools.permutations(item):
perms.add(perm)
perms = list(perms)
perms.sort()
self.to_bits = {}
self.to_code = {}
for x in enumerate(perms):
self.to_bits[x[0]] = ''.join([str(y) for y in x[1]])
self.to_code[''.join([str(y) for y in x[1]])] = x[0]
jest to praca domowa? – AShelly
Należy zauważyć, że w rzeczywistości nie opisano permutacji. –
Czuję nadchodzący strumień odpowiedzi na kod w golfa. :-) – payne