Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 4, 2014 20:03:05

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

Здравствуйте все кто желает помочь.
Спасибо, что уделили моему вопросу своё время.
Есть задачка на создание всех возможных паролей. Так как недавно изучаю питон, прошу Вас более опытных помочь мне в решение этой задачке.
Условие.
Символы в словаре:

 [abcdefghijklmnopqrstuvwxyz0123456789]
Длинна пароля от 10 до 10 символов
Повторение символов:
x - повторяющейся символ.
Символы могут повторяться в таком порядке и в любом месте:
1) xxx1234567 (пример: wrgtttk8d3, 4tdc96rfff)
2) xxx1xx3xx4 (пример: 3rrrlddpww, 444kww9zzr)
3) xx12345678 (пример: d4guur5dcm, htfd4kptt0)
4) xx12345xx9 (пример: 4mme4yydpl, oo4shpp4df)
5) случайный порядок (пример: wdgolgcnhf, apl4hvbdep)
Спасибо, что тратите своё время на помощь мне.

Отредактировано paraman (Фев. 5, 2014 12:08:19)

Офлайн

#2 Фев. 5, 2014 14:30:08

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

Кто-нибудь может мне помочь?

Офлайн

#3 Фев. 5, 2014 15:10:23

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

paraman
Есть задачка на создание всех возможных паролей.
Не имеет смысла.
Кол-во паролей будет, порядка 36^10, т.е. если генерировать по 100000 в сек, то выйдет более 1000 лет

По задаче, тупо перебор http://docs.python.org/2/library/itertools.html#itertools.product, и проверка 5-и условий регулярками.
Можно чуть сократить время и сделать генерацию под каждое условие.

Офлайн

#4 Фев. 5, 2014 19:38:39

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

Спасибо, хоть направление указали.

Офлайн

#5 Фев. 6, 2014 09:04:37

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

Задача так же не имеет практического смысла.

Офлайн

#6 Фев. 6, 2014 13:21:45

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

Shaman
Задача так же не имеет практического смысла.
Согласен, но иногда ставят вот такие задачи. Которые нужно как-то решать.

Офлайн

#7 Фев. 7, 2014 11:20:26

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

Пытаюсь генерировать словарь вот таким образом, но из-за нехватки памяти процесс убивается.
Есть рецепт или заклинание какое, как это победить?

from itertools import product
for i in [''.join(item) for item in product('abcdefghijklmnopqrstuvwxyz0123456789',repeat=10)]:
    stFile = open('1.txt', 'a+')
    stFile.write(str(i+'\n'))
    stFile.close()

Офлайн

#8 Фев. 7, 2014 19:55:10

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

С большими данными нужно работать через итераторы.
Делайте join в основном цикле, а формирование списка уберите.

Офлайн

#9 Фев. 10, 2014 22:03:39

paraman
Зарегистрирован: 2012-07-10
Сообщения: 170
Репутация: +  1  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

o7412369815963
С большими данными нужно работать через итераторы.Делайте join в основном цикле, а формирование списка уберите.
Спасибо, что помогаете, а можно подробней или пример.

Офлайн

#10 Фев. 11, 2014 18:25:27

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Генератор паролей по условию.

# coding: utf8
from itertools import product
stFile = open('1.txt', 'a+')
for i, item in enumerate(product('abcdefghijklmnopqrstuvwxyz0123456789',repeat=10)):
    if not i%1000000:
        print i
        stFile.flush()
    stFile.write(str(''.join(item)+'\n'))

product - дает итератор, enumerate - дает итератор, - работа происходит с одним элементом с момента генерирования до попадания в файл, далее переходит к следующему элементу. В вашем варианте происходило формирование “бесконечного” списка "" (а для бесконечного списка нужна бесконечная память), только после его формирования пошел бы процесс записи.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version