Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Алгоритм - сравнение 2х текстовиков Добавлено: 06.01.08 03:02  

Автор вопроса:  ZagZag | ICQ: 295002202 
У кого-нибудь есть алгоритм для сравнения 2х текстовиков?
Он должен находить добавленные, измененные и удаленные блоки текста.
Пример:
1.txt: 123456789
2.txt: 234111678

В результате должен быть выведен алгоритм (в синих блоках):
Если 1.txt "исходный":
1 - удалить
234
5 заменить на 111
678
9 - удалить


"Каретка" движется: |123456789 -> |23456789 -> 234|56789 -> 234111|6789 -> 234111678|9 -> 234111678|

Если 2.txt "исходный":
добавить 1
234
111 заменить на 5
678
добавить 9

"Каретка" движется: |234111678 -> 1|234111678 -> 1234|111678 -> 12345|678 -> 12345678| -> 123456789|

Или же, если измененные блоки сложно будет искать, то можно обойтись только добавлением и удалением.

Помогите, чем можете.
Ссылки на мануалы, примеры, алгоритмы, идеи...

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #1 Добавлено: 06.01.08 03:19
а блоки текста разной длины?

Ответить

Номер ответа: 2
Автор ответа:
 night-roll



Вопросов: 36
Ответов: 326
 Профиль | | #2 Добавлено: 06.01.08 03:39
уж сильно задача напоминает вот эту:
http://www.sumdu.edu.ua/tournament/mathematic/ua/simple/inform/ (см.п.4)

Ответить

Номер ответа: 3
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #3 Добавлено: 06.01.08 04:15
а блоки текста разной длины?

да

Таак.. уже кое-что. Как просплюсь - буду разбирааться.
Я так понял что идея в том чтобы найти общую последовательность символов для обеих строк, а затем уже выделять различия? Интересная идея. Надо погуглить тему.

В результате должен быть выведен алгоритм (в синих блоках)

Можно просто пометить различия в 2х текстах, если это проще (собственно это и нужно)

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 06.01.08 08:54
http://en.wikipedia.org/wiki/Longest_common_subsequence_problem

Ответить

Номер ответа: 5
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #5
Добавлено: 06.01.08 09:18
Почитай про расстояние Левенштейна

Ответить

Номер ответа: 6
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #6
Добавлено: 06.01.08 09:55
Кажется программка diff в никсах делает то же самое. Можно
поковыряться в ее исходниках.

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 06.01.08 15:05
Да, это было то, что я бы добавил в свой пост, если бы редактирование было разрешено :)

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 06.01.08 15:22
http://www.mathertel.de/Diff/

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам