Есть программа, которая регистрирует много информации, часть из которых имеет тенденцию повторяться в определенных ситуациях. Мне было поручено предотвратить это чрезмерное ведение журнала, и мне нужно какое-то направление относительно того, что делать. В настоящее время я могу предотвратить повторение одного и того же сообщения в строке, но оно становится намного сложнее, если не допустить появления уникальных наборов сообщений журнала различного размера.
Я попытался сначала разбить проблему на более мелкую, с помощью которой я использую символы для представления уникальных сообщений журнала.
вход
aaaaababababacdefgfggfabcddggddgg
Выход
abacdefgfabcdg
0 : Hash: 100, Msg: d
1 : Hash: 103, Msg: g
Это вывод для моей текущей программы, которая работает для 1-2 уникальных персонажей. Все символы, отображаемые в строке, представляют собой сообщения, которые регистрируются, и следующие две строки показывают, что содержит мой текущий буфер, используемый для сравнения последовательностей. Поэтому, если бы я добавил «xz» к исходному вводу, я получил бы следующий вывод
abacdefgfabcdgdg
0 : Hash: 120, Msg: x
1 : Hash: 122, Msg: z
Как мы можем видеть d
, g
get «logged», и следующая последовательность, которую мы не допустим, будет ‘xz’ или ‘z’ в зависимости от того, что находится в буфере последовательности.
Кто-нибудь знает о реальном алгоритме, который может обнаружить / предотвратить повторяющиеся уникальные последовательности?
Я смотрел на этот но это не совсем соответствует моим потребностям.
Больше примеров
Ввод -> Желаемый выход
- ABCABCACD -> ABCACD
- AAABABACBCBCB -> ABACB
- ABBABBA -> ABABA
- ACDACDDDCDC -> ACDC
Буквы представляют собой уникальные сообщения журнала, и я бы хотел, чтобы повторяющиеся наборы сообщений журнала не отображались.
Задача ещё не решена.
Других решений пока нет …