A175872 Write n in binary. Consider the 0's and 1 as a list. (*) If the new list consists entirely of 1's, then a(n) = the number of 1's, and end. Otherwise, construct a new list made up of the lengths, written in order, of the runs of similarly-valued terms from the previous list. Go to *.
1, 2, 2, 2, 3, 2, 3, 2, 3, 4, 2, 1, 2, 2, 4, 2, 3, 2, 2, 2, 5, 2, 2, 2, 2, 2, 3, 2, 2, 2, 5, 2, 3, 2, 3, 4, 2, 3, 3, 2, 2, 6, 2, 1, 3, 2, 2, 2, 3, 1, 1, 3, 2, 4, 3, 1, 3, 2, 3, 2, 2, 2, 6, 2, 3, 2, 3, 4, 2, 4, 2, 4, 5, 2, 2, 2, 2, 4, 3, 2, 2, 3, 2, 2, 7, 2, 2, 2, 2, 3, 2, 2, 3, 2, 2, 2, 3, 2, 3, 2, 2, 2, 2, 3, 2, 2, 3, 2, 2
Offset: 1
Examples
100 (decimal) in binary is 1100100. The lengths of the runs are: 2,2,1,2. The lengths of the runs in the latest list are: 2,1,1. The lengths of the runs in the latest list are: 1,2. The lengths of the runs in the latest list are: 1,1. This last list consists entirely of 1's. There are two 1's, so a(100) = 2.
Links
- Sean A. Irvine, Table of n, a(n) for n = 1..100000
Programs
-
Haskell
import Data.List (group, genericLength) a175872 = f . a030308_row where f xs | all (== 1) xs = length xs | otherwise = f $ map genericLength $ group xs -- Reinhard Zumkeller, Mar 26 2013
-
Mathematica
f[n_Integer] := IntegerDigits[n, 2]; f[nn:{1..}] := nn; f[nn_List] := Length /@ Split[nn]; a[n_] := FixedPoint[f, n] // Length; Table[a[n], {n, 1, 100}] (* Jean-François Alcover, Nov 26 2013 *)
Extensions
a(3) corrected by Leroy Quet, Oct 06 2010
More terms from Sean A. Irvine, Dec 02 2010
Comments