Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по маске 
:(
    Опции темы
Fixin
  Дата 15.12.2004, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Наверняка вопрос уже был, но я ничего не нашел. Помогите ссылками, или расскажите чем можете помоч smile smile
PM MAIL ICQ   Вверх
Akina
Дата 15.12.2004, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



А чего надо-то? и поподробнее, да?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
3,14
Дата 16.12.2004, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1614
Регистрация: 18.6.2004
Где: Н. Новгород

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



обработка регулярных выражений не подойдёт?


--------------------
Может быть, это только мой бред,
Может быть, жизнь не так хороша,
Может быть, я не выйду на свет,
Но я летал, когда пела душа...
PM MAIL   Вверх
Fixin
Дата 16.12.2004, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Цитата
А чего надо-то? и поподробнее, да?


Дано: *ени*; "найти слово по маске в данном выражении"
Ответ: выражЕНИи

Мне нужно узнать толко как определить подходит ли данное слово маске.

Цитата
обработка регулярных выражений не подойдёт?


Это как?
PM MAIL ICQ   Вверх
Петрович
Дата 16.12.2004, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

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



Посмотри сюда. Думаю это то что тебе нужно. Даже больше.


--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Fixin
Дата 18.12.2004, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Еще есть что-нибудь?
PM MAIL ICQ   Вверх
maxim1000
Дата 18.12.2004, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



ну, если интересует сам алгоритм, можно предложить некоторую вариацию на тему динамического программирования:
вводим функцию f(x,y):
1 - если первые x символов тестируемого слова соответствуют y первым y символам маски
0 - иначе
пусть n - длина слова, m - длина маски
тогда задача сводится к определению f(n,m)
а посчитать эту функцию можно рекурсивно:
f(x,y)="или" следующих выражений:
1. слово[x]==маска[y] и f(x-1,y-1)
2. маска[y]=='?' и f(x-1,y-1)
3. маска[y]=='*' и ( f(x-1,y-1) или f(x-1,y) )
для такого вычисления можно сделать матрицу n*m, в ячейках которой будут значения функции
если заняться оптимизацией, можно сохранять только последний столбец и тот, который вычисляется в данный момент



--------------------
qqq
PM WWW   Вверх
maxim1000
Дата 18.12.2004, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

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



вот, набросал тут на C++, проверил на нескольких простых примерах, вроде работает...
Код

bool func(char *Word,char *Mask)
{
 int MaskLength;
 bool *OldColumn;
 bool *CurrentColumn;
 bool result;
 int y;
 
 if((Mask[0]!='?')&&(Mask[0]!='*')&&(Mask[0]!=Word[0]))
   return false;
 MaskLength=0;
 while(Mask[MaskLength])
   MaskLength++;
 CurrentColumn=new bool[MaskLength];
 OldColumn=new bool[MaskLength];
 CurrentColumn[0]=true;
 for(y=1;y<MaskLength;y++)
   CurrentColumn[y]=false;
 Word++;
 while(*Word)
 {
   delete[] OldColumn;
   OldColumn=CurrentColumn;
   CurrentColumn=new bool[MaskLength];
   CurrentColumn[0]=(Mask[0]=='*');
   for(y=1;y<MaskLength;y++)
   {
     CurrentColumn[y]=false;
     if(Mask[y]=='*')
       CurrentColumn[y]=OldColumn[y] || OldColumn[y-1] || CurrentColumn[y-1];
     if(Mask[y]==*Word)
       CurrentColumn[y]=OldColumn[y-1];
     if(Mask[y]=='?')
       CurrentColumn[y]=OldColumn[y-1];
   }
   Word++;
 }
 result=CurrentColumn[MaskLength-1];
 delete[] CurrentColumn;
 return result;
}



--------------------
qqq
PM WWW   Вверх
Fixin
Дата 19.12.2004, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Сенькваю.
PM MAIL ICQ   Вверх
neutrino
Дата 19.12.2004, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

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



Тема обсуждалась тут: http://forum.vingrad.ru/index.php?act=ST&f=13&t=11581&st=0


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




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


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

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