Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите выявить повторения.... [D6, WinXP]


Drakosha ©   (2005-01-28 16:24:00) 

Есть функция которая выдаёт на выходе строку цифр
типа '12345890890890890890'
помогите преобразовать к виду '12345(890)'
ну тобишь найти когда начинается повторение.(повтаряться не только 890 будет, а любой набор цифр.


Drakosha   (2005-01-31 16:14:00) [1]

Если что то сопадает, то возпожноэто и есть период...

:)


КаПиБаРа   (2005-01-31 12:41:00) [2]

Записываешь 2 строчки одну под другой.
Сдвигаешь вправо

12345890890890890890
  12345890890890890  890
--------------------
00000000111111111111


Проверяешь цифры расположенные друг под другом. Если что то сопадает, то возпожно это и есть период...


ЮЮ   (2005-01-31 12:40:00) [3]

>Можем получить типа '1234589(089)'

Как?
шаг1. '9' '0' - нет повторения
шаг2. '08' '90' - нет повторения
шаг3. '890' '890' - есть повторение
 
другое дело, для случая 233233233 получим 2332332(3), хотя надо (233), поэтому алгоритм лучше не сварачивать при первом нахождении, а продолжить до конца, всят тот вариант, который сворачивает большее количесто символов


Gloomer   (2005-01-31 12:27:00) [4]

>ЮЮ ©   (31.01.05 12:11) [5]
Алгоритм имеет право на жизнь, но он не определяет первой цифры начала повторения. Можем получить типа '1234589(089)'.
Конечно это одно и то же, но обычно так не принято.


ЮЮ   (2005-01-31 12:11:00) [5]

цикл по <длине повторения> от 1 до половины длины строки
 если
   части строки длиной <длине повторения> в конце строки
   и непосредственно перед ней совпали
 то
   //найдена повторяющаяся часть
   сворачиваем повторения
   выход из цикла
 конец если
конец цикла


Drakosha   (2005-01-31 11:57:00) [6]

2REA
Повторения будут начанатьсяс какого то места и продолжаться дальше.. т.е. в твоём примере их вообще нет.


REA   (2005-01-28 17:39:00) [7]

Только что есть повторения? Например в такой строке aababcabcdabcde. ab - 4, abc - 3, abcd - 2


REA   (2005-01-28 17:38:00) [8]

Можно по принципу Gif - строить таблицу всех встреченных комбинаций.


TUser   (2005-01-28 16:26:00) [9]

Фурье-анализ тебе нужен :)
А лучше - просто перебор. Поскольку известно, что повторения абсолютно точные - то проверяй на повторение одного, двух, трех и т.д. символов.


Наверх

Титульная страница Поиск, карта сайта Написать письмо