Каков наилучший способ найти период (повторяющегося) списка в 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
если нет повторяющегося шаблона, как указано выше.