finding repeating patterns

jbv jbv.silences at club-internet.fr
Sat Aug 26 18:07:27 EDT 2006



Dar,

I came up to something similar... Here's a (very raw and quite slow) first approach
(it checks only groups of 6 to 20 chars) :

on mouseUp
  set cursor to watch
  lock screen
  put fld 1 into myST
  put "" into myL
  set the casesensitive to true
  repeat with k=1 to 1000
    repeat with i=20 down to 6
      put k+i-1 into b
      get char k to b of myST
      put myST into a
      replace it with "" in a
      put ((number of chars of myST - number of chars of a) / b) into c
      if c>=2 then
        put it & tab & c & cr after myL
        exit repeat
      end if
    end repeat
  end repeat
  put myL
end mouseUp

> On Aug 26, 2006, at 3:17 PM, jbv wrote:
>
> > Does anyone have (or know of) an algorithm to find repeating
> > patterns of characters in a string ?
>
> This brute-force method came to my mind.  Decide on a min and max
> length of patterns.  Try all possible substrings.  (Outer loop is
> start position, inner loop is end char based on min & max length.
> With each one check in an array.  If not there put 1 otherwise
> increment.  Look for counts greater than 1.
>
> If the repeating pattern must come right after the starting pattern,
> then this does not apply.  In that case, just look for the repeats of
> the substring after the trial string.  The problem is that "xaxaxaxa"
> would be counted as a repeating of "xa" and a repeating of "xaxa".
>
> Dar Scott




More information about the use-livecode mailing list