Как перебрать все возможные сочетания знаков и сохранить результат для быстрого поиска в нем?
Здравствуйте. Необходимо написать программу, которая перебирала бы ВСЕ возможные сочетания букв (допустим, русского алфавита, с разделением на большие и маленькие) [а-я, A-Я] и знаков препинания [!@#$%^&*()_+] в строке длинной n. Повторения знаков в строке возможны сколько угодно раз. Кроме того нужно сохранять результат, да так, чтобы можно было быстро производить поиск (БД?)
Посоветуйте пожалуйста на каком языке и как реализовать для максимального быстродействия как создания наборов "все возможные сочетания символов в строке длиной n" так и для быстрого поиска в результате?
Для начала оцените размер который займёт такой набор. Для только русского алфавита это будет 66^n. Со знаками препинания - 80^n. Где хранить такой объём собираетесь?
И полный перебор пароля - не лучший способ.
Выбор языка программирования в данном случае несущественен, в любом случае программа будет работать годы и сожрет огромное количество дискового пространства.
К примеру, если на одном языке программа отработает за 20 тыс. лет, на другом за 25 тыс. лет, то это будет для вас иметь определящюее значение?
Для не очень длинных последовательностей будут приемлемые сроки работы. Так что "размер" имеет значение. Например, для частного случая "4 строки длиной до 100 символов".
тогда надо уточнить n.
При n=4 будет 18 974 736 вариантов
при n=5 будет уже 1 252 332 576
при n=8 (минимальная длина пароля у большинства систем) это это уже 3.6E+14 вариантов. Если умножить на 8 символов, и в русской кодировка (ещё умножаем на 2), у нас получается почти 15-ая степень байт = 1000 терабайт информации. У вас есть такое количество дискового пространства в наличии?