Finding the period of an array of integers
This uses partitioning, with padding if required, to make sublists.
f = Module[{b, c = 1},
While[Length[b = Union@Partition[#, c, c, {1, 1}, Take[#, c]]] > 1, c++];
{Length@First@b, First@b}] &;
Example
f@{73, 7, 4, 73, 7, 4, 73, 7, 4, 73, 7, 4, 73, 7}
{3, {73, 7, 4}}
ClearAll[len]
len[{p__, p__ .., e___}] /; MatchQ[{p}, {e, __}] := Length[{p}]
len[p_] := Length[p]
len /@ lists
(* {2, 3, 14} *)
I won't bet my hand for this but seems to be ok:
ClearAll[return];
return[x : {0 ..., 1}, list_] := {#, list[[;; #]]} &[Length@x];
return[x_, y_] := {Length@y, y};
sqPeriod[list_] := return[FindLinearRecurrence[list], list]
sqPeriod /@ {
{19, 6, 19, 6, 19, 6, 19, 6, 19, 6, 19, 6},
{73, 7, 4, 73, 7, 4, 73, 7, 4, 73, 7, 4, 73, 7},
{73, 7, 4, 7, 2, 6, 7, 2, 7, 73, 9, 17, 7, 7}
} // Column