Подскажите как реализовать генерацию всех комбинаций по маске.
Есть маска !&&!!&&!, где ! - цифра, а & - буква.
С помощью itertools.product("ABC123", 3) можно сгенерировать все комбинации паролей, но я не понимаю, как реализовать функцию, которая будет генерировать все те же комбинации, но только по заданной маске.
Вот функция product:
def product(*args, repeat=1):
# product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
# product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
pools = [tuple(pool) for pool in args] * repeat
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)
Если с дефолтной генерацией комбинаций все ясно, то не ясно как генерировать по маске.
Вот пример работы программы:
Помогите, пожалуйста.