Cytat(Pyton_000 @ 26.09.2013, 22:25:32 )

Bierzesz ramkę powiedzmy 3 cyfry i przeszukujesz cały ciąg wypisując do tablicy kombinacje wyszukane i licznik ile razy było znalezione.
Potem zwiększasz ramkę o 1 cyfrę i jedziemy od początku
Przede wszystkim jakiej długości minimalnie ma być ciąg który się może powtórzyć?
To też chciałem zaproponować, ale przelatywanie cyfr od 0 do 999 jest trochę mało wydajne, a co dopiero przy większej ilości.
Na pewno ma to sens, jeśli szukamy max 2-cyfrowej liczby.
W przypadku dłuższych ciągów nie wiem, czy nie wydajniej byłoby zrobić 'suwak' obejmujący ileś tam liczb.
1) Najpierw "odcinamy" cyfry (od pozycji 0 do 4) i robimy z nich wzorzec;
2) Przelatujemy wzorcem ciąg i wypisujemy powtórzenia;
3) Robimy nowy wzorzec przesunięty o 1 (odcinamy od pozycji 1 do 5 w ciągu) i znowu porównujemy;
4) I tak do skutku. Przerywamy, gdy rozpiętość wzorca przekroczy długość badanego ciągu.
Coś w ten deseń:
$testSequence = '5679854356798543567985435679854356798543'; //testowany ciąg liczb
$patternLength = 4; //startowa wielkość badanego wycinka;
for ($patternLength; $patternLength <= ceil(strlen($testSequence) / 2
); $patternLength++) {
for ($i=0; $i<=(strlen($testSequence) - $patternLength); $i++) {
$pattern = '/'.substr($i, ($i+$patternLength)).'/';
{
}
}
}