Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсионный генератор паролей, Рекурсионный генератор паролей 
V
    Опции темы
bi01
Дата 20.5.2012, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.5.2012

Репутация: нет
Всего: нет



Здравствуйте уважаемые посетители и разработчики!
Есть задачка на создание всех возможных паролей методом рекурсии. Так как я в изучении языка новичок, к как не бился не получается решить эту задачу.
Условия - есть произвольный словарь/алфавит символов и есть произвольная длина пароля. Нужно сделать базу всех возможных паролей. Т.е. по сути перебор всех значений (рекурсия по 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). 
Но, к сожалению так ничего не получилось.

Подскажите, как решить эту задачу или где можно почитать об этой теме. Спасибо.
PM MAIL   Вверх
Karadul
Дата 20.5.2012, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Код

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)


Это сообщение отредактировал(а) Karadul - 20.5.2012, 15:57
PM MAIL   Вверх
bi01
Дата 20.5.2012, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.5.2012

Репутация: нет
Всего: нет



Karadul,  спасибо за предложенный вариант. То что нужно!
PM MAIL   Вверх
Karadul
Дата 21.5.2012, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Спасибо в репу скажи.
PM MAIL   Вверх
bi01
Дата 21.5.2012, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.5.2012

Репутация: нет
Всего: нет



Мало постов на этом форуме. Пока не могу 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0798 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.