OFFSET
0,4
COMMENTS
Given a string S, write it as S = XYY...Y = XY^k, where X may be empty, and k is as large as possible; then k is the curling number of S.
LINKS
Reinhard Zumkeller, Table of n, a(n) for n = 0..8191
Benjamin Chaffin, John P. Linderman, N. J. A. Sloane, and Allan R. Wilks, On Curling Numbers of Integer Sequences, Journal of Integer Sequences, Vol. 16 (2013), Article 13.4.3.
FORMULA
A212439(n) = 2*n + a(n) mod 2. - Reinhard Zumkeller, May 17 2012
EXAMPLE
731 = 1011011011 in binary, which we could write as XY^2 with X = 10110110 and Y = 1, or as XY^3 with X = 1 and Y = 011. The latter is better, giving k = 3, so a(713) = 3.
MATHEMATICA
f[n_, e_] := Module[{d = IntegerDigits[n, 2^e]}, Length[Split[d][[-1]]] - If[SameQ @@ d && Mod[n, 2^e] < 2^(e-1), 1, 0]]; a[n_] := Max[Table[f[n, e], {e, Range[Max[1, Floor[Log2[n]]]]}]]; a[0] = 1; Array[a, 100, 0] (* Amiram Eldar, Apr 08 2025 *)
PROG
(Haskell)
import Data.List (unfoldr, inits, tails, stripPrefix)
import Data.Maybe (fromJust)
a181935 0 = 1
a181935 n = curling $ unfoldr
(\x -> if x == 0 then Nothing else Just $ swap $ divMod x 2) n where
curling zs = maximum $ zipWith (\xs ys -> strip 1 xs ys)
(tail $ inits zs) (tail $ tails zs) where
strip i us vs | vs' == Nothing = i
| otherwise = strip (i + 1) us $ fromJust vs'
where vs' = stripPrefix us vs
-- Reinhard Zumkeller, May 16 2012
CROSSREFS
KEYWORD
nonn,base
AUTHOR
N. J. A. Sloane, Apr 02 2012
STATUS
approved
