Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2016, 15:20   #1
Никита2001
Новичок
Джуниор
 
Регистрация: 14.12.2016
Сообщений: 3
По умолчанию Нахождение слова полным перебором

Доброе время суток. Прошу помощи. Пусть мы написали слово состоящее из русских, английских букв и чисел. Можете посоветовать код, который найдет это слово методом полного перебора? (пример. Вводим слово "рв2gg". а на выходе "Искомое слово "рв2gg" найдено. Количество проверенных сочетаний n")
Никита2001 вне форума Ответить с цитированием
Старый 14.12.2016, 15:39   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сначала определиться что такое слово. В тексте "abv 1abve" слово "abv" встечается 1 или 2 раза? Если 1, то какие разделители слов? Если 2 раза, то можно искать примерно так
Код:
  s1:='abv 1abve';  s2:='abv';
  Position:=1; Count:=0;
  while Position>0 do begin
    Position:=PosEx(s1,s2,Position);
    if Position>0 then begin
      Inc(Count);
      Inc(Position,Length(s2));
    end;
  end;
Код в браузере набросал, так что не обессудь )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.12.2016, 15:49   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

длина пароля, надеюсь, не большая?
Потому что, иначе, Вы не дождётесь.

то, что Вы хотите, в математике (комбинаторике) называется
Размещения с повторениями

даже если не различать прописные и строчные буквы, то получаем
алфавит: 33 русские + 26 латинских + 10 цифр = 69

число вариантов n^k, в данном случае 69^k,
где k-длина

т.е. для вашего примера, где k=5, число вариантов: 1564031349
дальше, как Вы понимаете, хуже.

что же касается непосредственно программы перебора вариантов.
То это несложно.
Тут уже всё упирается в эффективность применённого алгоритма и его реализацию (насколько это будет быстро).

так, навскидку, пример можете посмотреть в этой теме:
Перебор всех доступных значений!

Комбинаторика - нахождение всех возможных комбинаций

Сгенерировать все подмножества (Delphi)

.

Последний раз редактировалось Serge_Bliznykov; 14.12.2016 в 15:58.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2016, 15:52   #4
Никита2001
Новичок
Джуниор
 
Регистрация: 14.12.2016
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Сначала определиться что такое слово. В тексте "abv 1abve" слово "abv" встечается 1 или 2 раза? Если 1, то какие разделители слов? Если 2 раза, то можно искать примерно так
Код:
  s1:='abv 1abve';  s2:='abv';
  Position:=1; Count:=0;
  while Position>0 do begin
    Position:=PosEx(s1,s2,Position);
    if Position>0 then begin
      Inc(Count);
      Inc(Position,Length(s2));
    end;
  end;
Код в браузере набросал, так что не обессудь )
Спасибо что ответили быстро) Но тут поиск не в тексте. Тут даже так. Нам надо найти методом перебора букв (например английского алфавита) и цифр заданное слово.
Никита2001 вне форума Ответить с цитированием
Старый 14.12.2016, 16:02   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Никита2001 Посмотреть сообщение
Тут даже так. Нам надо найти методом перебора букв (например английского алфавита) и цифр заданное слово.
я ответил Вам на этот вопрос.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.12.2016, 16:22   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
const //составим "словарик" 
  ALF ='0123...9ABC...Z'; //все интересующие нас символы

for j:=1 to length(ALF) do // и пройдем по словарику "перебор букв из СПИСКА"
  writeln(ALF[j]);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 14.12.2016, 16:24   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Упс, и зачем код не с той оперы написал) Думаю в конце концов весь этот перебор сведется к банальной попытке взлома парольной защиты. А зачем еще такие переборы?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.12.2016, 16:33   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
readln(myword); //Вводим слово "рв2gg".
writeln( format('искомое слово "%s" найдено' , [myword]); // а на выходе "Искомое слово "рв2gg" найдено. 
writeln( format('количество проверок %d', [0]); //Количество проверенных сочетаний n")
в полном соответствии с ТЗ. если хотите другое уточняйте ТЗ.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 14.12.2016, 16:39   #9
Никита2001
Новичок
Джуниор
 
Регистрация: 14.12.2016
Сообщений: 3
По умолчанию

Ах. Если бы взлом пароля. Тут все гораздо прозаичнее. Реализовать алгоритм полного перебора до заданного слова (анализ сколько по времени будет происходить перебор, сделать вывод почему надо использовать сложный пароль (исходя из заданного алфавита))
Никита2001 вне форума Ответить с цитированием
Старый 14.12.2016, 16:43   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
n^k
Весь анализ - во сколько раз 5^33 будет больше 4^33, примерно во столько же раз дольше будет и генерация паролей проходить. Не считая еще попытки применить пароль
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа, которая полным перебором найдёт все такие последовательности из знаков + и -, что получившееся значение неотрицательно Son1098 Общие вопросы C/C++ 3 25.10.2016 23:37
Нахождение цифрового слова Nekala Общие вопросы Delphi 1 03.01.2015 15:25
Коммивояжер полным перебором kita22 Помощь студентам 1 07.04.2013 14:56
нахождение слова в строке saurons Общие вопросы C/C++ 7 01.06.2011 01:35
Нахождение слова в строке Bujhm127 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 08.04.2011 13:18