Страница: 1 |
Страница: 1 |
Вопрос: Алгоритм - сравнение 2х текстовиков
Добавлено: 06.01.08 03:02
Автор вопроса: ZagZag | ICQ: 295002202
У кого-нибудь есть алгоритм для сравнения 2х текстовиков?
Он должен находить добавленные, измененные и удаленные блоки текста.
Пример:
1.txt: 123456789
2.txt: 234111678
В результате должен быть выведен алгоритм (в синих блоках):
Если 1.txt "исходный":
234
5 заменить на 111
678
9 - удалить
"Каретка" движется: |123456789 -> |23456789 -> 234|56789 -> 234111|6789 -> 234111678|9 -> 234111678|
Если 2.txt "исходный":
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-сайт:
Профиль | | #5
Добавлено: 06.01.08 09:18
Почитай про расстояние Левенштейна
Номер ответа: 6
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #6
Добавлено: 06.01.08 09:55
Кажется программка diff в никсах делает то же самое. Можно
поковыряться в ее исходниках.
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 06.01.08 15:05
Да, это было то, что я бы добавил в свой пост, если бы редактирование было разрешено
Номер ответа: 8
Автор ответа:
Winand
Вопросов: 87
Ответов: 2795
Web-сайт:
Профиль | | #8
Добавлено: 06.01.08 15:22
http://www.mathertel.de/Diff/