OFFSET
1,5
COMMENTS
The curling number of a finite string S = (s(1),...,s(n)) is the largest integer k such that S can be written as xy^k for strings x and y (where y has positive length).
LINKS
F. J. van de Bult, D. C. Gijswijt, J. P. Linderman, N. J. A. Sloane and Allan Wilks, A Slow-Growing Sequence Defined by an Unusual Recurrence, J. Integer Sequences, Vol. 10 (2007), #07.1.2.
MAPLE
fd := fopen("b006345.txt", READ) : a006345 := [] : bf := fscanf(fd, "%d %d") : while nops(bf) <> 0 do a006345 := [op(a006345), op(2, bf) ] ; bf := fscanf(fd, "%d %d") ; od: curlN := proc(L) local a, k, klen, Llen, y ; a := 1 ; Llen := nops(L) ; for klen from 1 to floor(Llen/2) do y := op(Llen-klen+1..Llen, L) ; for k from 2 to floor(Llen/klen) do if op(Llen-k*klen+1..Llen-(k-1)*klen, L) = y then if k > a then a := k ; fi ; else break ; fi ; od: od: RETURN(a) ; end: A094840 := proc(n) global a006345 ; if n = 1 then 1; else curlN( [op(1..n-1, a006345)] ) ; fi ; end: for n from 1 to 100 do printf("%d, ", A094840(n)) ; od: # R. J. Mathar, Dec 07 2007
MATHEMATICA
nmax = 100;
LDS[L_] := Module[{Cands, r, m}, Cands = Range[Floor[Length[L]/2]]; r = 0; For[m = 1, Length[Cands] > 0, m++, Cands = Select[Cands, L[[-m]] == L[[-# - m]]&]; If[Min[Cands] == m, r = m; Cands = ReplaceAll[Cands, m -> Nothing]]]; r];
A = {1};
For[n = 2, n <= nmax, n++, If[LDS[Append[A, 1]] < LDS[Append[A, 2]], A = Append[A, 1], A = Append[A, 2]]];
a006345 = A;
curlN[L_] := Module[{a, k, klen, Llen, y}, a = 1; Llen = Length[L]; For[klen = 1, klen <= Floor[Llen/2], klen++, y = L[[Llen - klen + 1 ;; Llen]]; For[k = 2, k <= Floor[Llen/klen], k++, If[L[[Llen - k*klen+1 ;; Llen - (k-1)*klen]] == y, If[k > a, a = k] , Break[]]]]; Return[a]];
A094840[n_] := If [n == 1, 1, curlN[a006345[[1 ;; n-1]]]];
Table[A094840[n], {n, 1, nmax}] (* Jean-François Alcover, Oct 18 2024, after Maple programs *)
CROSSREFS
KEYWORD
nonn
AUTHOR
N. J. A. Sloane, May 26 2004
STATUS
approved