#python
#python
Вопрос:
Как сгенерировать все комбинации с 3 прописными буквами в строке? Например:
f("abcde") => ['ABCde', 'aBCDe', 'abCDE', 'ABcDe', 'ABcdE' ...]
Комментарии:
1. и что вы пробовали?
Ответ №1:
Одним из способов было бы сгенерировать декартово произведение букв (как в нижнем, так и в верхнем регистре), а затем сохранить их, только если в них ровно 3 заглавные буквы
from itertools import product
def combs(s, n):
pairs = tuple(i.lower() i.upper() for i in s)
for i in product(*pairs):
if sum(1 for j in i if j.isupper()) == n:
yield ''.join(i)
Пример
for s in combs('abcde', 3):
print(s)
Вывод
abCDE
aBcDE
aBCdE
aBCDe
AbcDE
AbCdE
AbCDe
ABcdE
ABcDe
ABCde
Ответ №2:
def f(s):
r = []
for i in range(1, len(s)-1):
for j in range(i 1, len(s)):
r.append(s[:i].capitalize() s[i:j].capitalize() s[j:].capitalize())
return r