Lucas,
Um dos possíveis caminhos para fazer isso com os recursos do itertools
é saber que temos como descobrir quais possíveis posições da string
terão o "case" trocado. Para isso, pode-se usar o segundo parâmetro da
função combinations para informar a quantidade de letras que serão
trocadas a cada iteração.
Algo mais ou menos assim:
>>> import itertools
>>> positions = range(len('ABCDEF'))
>>> combinations = []
>>> for n in positions:
... combinations.append(list(itertools.combinations(positions, n+1)))
>>> combinations
[[(0,), (1,), (2,), (3,), (4,), (5,)], [(0, 1), (0, 2), (0, 3), (0,
4), (0, 5), (1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5),
(3, 4), (3, 5), (4, 5)], [(0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 1, 5),
(0, 2, 3), (0, 2, 4), (0, 2, 5), (0, 3, 4), (0, 3, 5), (0, 4, 5), (1,
2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5), (1, 4, 5), (2, 3,
4), (2, 3, 5), (2, 4, 5), (3, 4, 5)], [(0, 1, 2, 3), (0, 1, 2, 4), (0,
1, 2, 5), (0, 1, 3, 4), (0, 1, 3, 5), (0, 1, 4, 5), (0, 2, 3, 4), (0,
2, 3, 5), (0, 2, 4, 5), (0, 3, 4, 5), (1, 2, 3, 4), (1, 2, 3, 5), (1,
2, 4, 5), (1, 3, 4, 5), (2, 3, 4, 5)], [(0, 1, 2, 3, 4), (0, 1, 2, 3,
5), (0, 1, 2, 4, 5), (0, 1, 3, 4, 5), (0, 2, 3, 4, 5), (1, 2, 3, 4,
5)], [(0, 1, 2, 3, 4, 5)]
A ideia é só demonstrar uma aplicação da função combinations. Alocar
essa lista previamente pode não ser a solução mais adequada, ok?
Abraço,
--
Rodrigo Amaral
http://rodrigoamaral.net
2013/8/14 Lucas de Biaggi Januário <
lbjan...@gmail.com>:
Rodrigo Amaral
rodrig...@gmail.com