Умное сравнение строк (алгоритм)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Умное сравнение строк (алгоритм)

Сообщение Q2W » 24.02.2006 (Пт) 16:18

Мне нужен только алгоритм, т.к. я это нужно не на VB, а на perl.
Есть два варианта текста.
Они почти одинаковы, но в некоторых местах отличаются. Причём длина отличий не фиксированная.

Нужно получить строку безо всех этих отличий.
Т.е.
Код: Выделить всё
Вариант 1:
Bla bla one <a href="blabla_one_one">bla</a> one
вариант 2:
Bla bla two three <a href="four_bla_bla_two">bla</a>

Результат:
Bla b;a <a href="bla_">bla</a>


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

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.02.2006 (Пт) 16:24

Я чё-то вообще не улавливаю, как из 1 и 2 получается этот результат...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 24.02.2006 (Пт) 16:50

Помечу различия:
Вариант 1:
Bla bla one <a href="blabla_one_one">bla</a> one
вариант 2:
Bla bla two three <a href="four_bla_bla_two">bla</a>

Результат:
Bla bla <a href="bla_">bla</a>

Вот то, что цветное - это различия. Их надо убить - получится результат. Но как их найти - вопрос.
Я знаю верный путь

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.02.2006 (Пт) 16:58

А я отмечу различия по-другому.

Bla bla one<a href="blabla_one_one">bla</a> one

Bla bla two three<a href="four_bla_bla_two">bla</a>

И чё?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 24.02.2006 (Пт) 17:01

GSerg писал(а):А я отмечу различия по-другому.

Bla bla one<a href="blabla_one_one">bla</a> one

Bla bla two three<a href="four_bla_bla_two">bla</a>

И чё?

Ты отметил их не правильно, т.к. знак подчёркивания внутри <a></a> есть в обоих вариантов. Причём по 2 штуки, так что и я не правильно отметил.

А задача в том, чтобы это сделала машина. Точнее чтобы она не отметила различия, а выкинула их.
Я знаю верный путь

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 24.02.2006 (Пт) 17:06

Сначала покажи, что различия можно выкинуть единственным способом. Для меня это неочевидно.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.02.2006 (Пт) 17:17

Спроси у гугля про "Fuzzy Logic".
Правда я не уверен, что это то что тебе надо, слишком уж невнятно ты задал вопрос.
Lasciate ogni speranza, voi ch'entrate.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 24.02.2006 (Пт) 17:34

Q2W, наверняка ты действуешь не в том направлении.
Расскажи конечную цель алгоритма.

Например,
На странице есть ссылки такого вот вида (....), их надо преобразовать к такому-то виду (...), чтобы при нажатии на них открывался такой-то адрес (...)

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 24.02.2006 (Пт) 18:16

Amed писал(а):Q2W, наверняка ты действуешь не в том направлении.
Расскажи конечную цель алгоритма.

Например,
На странице есть ссылки такого вот вида (....), их надо преобразовать к такому-то виду (...), чтобы при нажатии на них открывался такой-то адрес (...)


Есть страница с динамическим контентом. Нужно от него избавиться.
Если загрузить его 2 раза, увидим отличия - их и надо убить.
Отличия могут быть где угодно, разве что количество отличий вряд ли будет меняться.
Я знаю верный путь

Approximator
Постоялец
Постоялец
 
Сообщения: 572
Зарегистрирован: 26.06.2004 (Сб) 3:10

Сообщение Approximator » 24.02.2006 (Пт) 19:43

Q2W писал(а):
Amed писал(а):Q2W, наверняка ты действуешь не в том направлении.
Расскажи конечную цель алгоритма.

Например,
На странице есть ссылки такого вот вида (....), их надо преобразовать к такому-то виду (...), чтобы при нажатии на них открывался такой-то адрес (...)


Есть страница с динамическим контентом. Нужно от него избавиться.
Если загрузить его 2 раза, увидим отличия - их и надо убить.
Отличия могут быть где угодно, разве что количество отличий вряд ли будет меняться.


Задача в таком виде (когда длина "динамического контента" не ограничена, а так же не фиксирован его формат) аналитического решения не имеет... вообще.

Даже при наличии ограничения на длину "динамического контента" всё равно возможны варианты, когда универсальный алгоритм невозможно будет придумать. Например, если в "динамическом контенте" повторяется часть "нужного текста". Есть и другие неразрешимые варианты...

Возможные решения - искать способ отличить "динамический контент" по каким-либо отличительным элементам: элементам форматирования, структуре и т.п.
С уважением, Approximator.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 24.02.2006 (Пт) 20:07

Approximator писал(а):Задача в таком виде (когда длина "динамического контента" не ограничена, а так же не фиксирован его формат) аналитического решения не имеет... вообще.

Даже при наличии ограничения на длину "динамического контента" всё равно возможны варианты, когда универсальный алгоритм невозможно будет придумать. Например, если в "динамическом контенте" повторяется часть "нужного текста". Есть и другие неразрешимые варианты...

Возможные решения - искать способ отличить "динамический контент" по каким-либо отличительным элементам: элементам форматирования, структуре и т.п.


Ясно, что автоматизировать эту задачу невозможно.
Но, я хочу сделать алгоритм, который максимально безошибочно выполнял бы эти действия, т.е. ошибки, как таковые допустимы.

У меня зарождается алгоритм, но он уж больно жёсткий.
Я знаю верный путь

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 25.02.2006 (Сб) 0:20

Есть еще предложение. :)

Q2W писал(а):Есть страница с динамическим контентом. Нужно от него избавиться.
Если загрузить его 2 раза, увидим отличия - их и надо убить.
Отличия могут быть где угодно, разве что количество отличий вряд ли будет меняться.


Ссылку дай, будет больше мыслей.

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 25.02.2006 (Сб) 15:31

Amed писал(а):Есть еще предложение. :)

Q2W писал(а):Есть страница с динамическим контентом. Нужно от него избавиться.
Если загрузить его 2 раза, увидим отличия - их и надо убить.
Отличия могут быть где угодно, разве что количество отличий вряд ли будет меняться.


Ссылку дай, будет больше мыслей.

Не могу дать такой ссылки по определению. Такова задача.
Я знаю верный путь

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 25.02.2006 (Сб) 15:41

Хостинговую рекламу фильтруем?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Q2W
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 745
Зарегистрирован: 31.01.2004 (Сб) 20:46
Откуда: Питер

Сообщение Q2W » 25.02.2006 (Сб) 19:15

Не совсем.
Я знаю верный путь


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 43

    TopList