Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Рекурсионный генератор паролей


Автор: bi01 20.5.2012, 10:37
Здравствуйте уважаемые посетители и разработчики!
Есть задачка на создание всех возможных паролей методом рекурсии. Так как я в изучении языка новичок, к как не бился не получается решить эту задачу.
Условия - есть произвольный словарь/алфавит символов и есть произвольная длина пароля. Нужно сделать базу всех возможных паролей. Т.е. по сути перебор всех значений (рекурсия по 2-хмерному массиву неопределенной длины), включая(!) отдельные символы алфавита. Например имеем: 

alf = 'abcdefghijklmnopqrstuvwxyz'
count = 2
# тогда всевозможное количество вариантов будет равно:
all_count = count**len(alf) + len(alf) 
# Переменная, где будут храниться все значения
allpassw = []
# сама рекурсионная функция 
def recursion(dic, n):
    global allpassw
    if n <= 0: return 1
    else:        
        for i in dic: allpassw.append(i)
        return allpassw+recursion(dic, n-1)
# Вызываем процедуру
recursion(alf, count)
# Печатаем результат
print allpassw

Второй вариант, который я рассматривал был связан с функциями-генераторами (yield). 
Но, к сожалению так ничего не получилось.

Подскажите, как решить эту задачу или где можно почитать об этой теме. Спасибо.

Автор: Karadul 20.5.2012, 15:38
Код

chars = string.ascii_lowercase
passwords = []
def recursion(count, s=""):
    if count <= 0:
        passwords.append(s)
        return
    for c in chars:
        recursion(count - 1, s+c)

recursion(2)

Автор: bi01 20.5.2012, 22:57
Karadul,  спасибо за предложенный вариант. То что нужно!

Автор: Karadul 21.5.2012, 00:03
Спасибо в репу скажи.

Автор: bi01 21.5.2012, 23:47
Мало постов на этом форуме. Пока не могу 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)