Ваш вопрос на самом деле "сделать все элементы из x: x + k подходящими элементами из y: y + k".То есть подмножество длины k встречается дважды в строке?
И вы хотите, чтобы x: x + k не перекрывалось с y: y + k.Самый простой способ сделать это - определить y как x плюс некоторое смещение, d.Если вы гарантируете, что k <= d <len (line) -xk, то вы всегда будете смотреть за пределы линии. </p>
Затем вы будете изменять k от 1 до len (line) //2, ищет дубликаты различной длины с заданным смещением друг от друга.
Смещение от x до y, d будет варьироваться от 1 до len (line) -xk.
Начальная позиция для x также будет варьироваться от 0 до len (строка) // 2.
Итак, часть "all" выглядит примерно так: all( line[i] == line[i+d] for i in range(x,x+k) )
для различных юридическихзначения d
, x
и k
.