Каков наилучший способ найти период (повторяющегося) списка в Mathematica?

Каков наилучший способ найти период в повторяющемся списке?

Например:

a = {4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2}

повторил{4, 5, 1, 2, 3} с остатком{4, 5, 1, 2} соответствие, но будучи неполным.

Алгоритм должен быть достаточно быстрым, чтобы обрабатывать более длинные случаи, например:

b = RandomInteger[10000, {100}];
a = Join[b, b, b, b, Take[b, 27]]

Алгоритм должен вернуть$Failed если нет повторяющегося шаблона, как указано выше.

Ответы на вопрос(9)

Ваш ответ на вопрос