login
Run lengths of the bits in A308092, read in binary.
1

%I #30 Aug 12 2022 19:14:01

%S 2,1,8,1,3,2,3,3,3,4,3,5,3,6,3,7,2,1,10,1,11,1,9,1,2,1,9,2,2,1,8,1,5,

%T 1,8,1,3,1,2,1,8,1,3,1,3,1,8,1,3,1,1,1,2,1,8,1,3,1,1,2,2,1,8,1,3,2,5,

%U 1,8,1,3,2,3,1,2,1,8,1,3,2,3,2,2,1,8,1

%N Run lengths of the bits in A308092, read in binary.

%H Peter Kagey, <a href="https://math.stackexchange.com/q/4081203/121988">Run lengths of bits and run lengths of an auxiliary sequence</a>, Mathematics Stack Exchange.

%e In binary, A308092 is 1, 10, 11, 111, 1110, 11100, 111000, 1110000, .... The sequence begins with a(1) = 2 ones followed by a(2) = 1 zeros, a(3) = 8 ones, a(4) = 1 zeros, a(5) = 3 ones, a(6) = 2 zeros, and so on.

%e This sequence first disagrees with A342937 at n = 51, where a(51) = 1 and

%e A342937(51) = 2.

%o (Python)

%o from itertools import groupby

%o def aupton(terms):

%o A308092, bstr, rl_lst, rl_idx, n = [1, 2], "110", [2], 2, 3

%o while len(rl_lst) < terms:

%o an = int(bstr[:n], 2) - int(bstr[:n-1], 2)

%o A308092, bstr, n = A308092 + [an], bstr + bin(an)[2:], n+1

%o new_runs = [len(list(g)) for k, g in groupby(bstr[rl_idx:])]

%o if len(new_runs) > 1:

%o rl_idx += sum(new_runs[:-1])

%o rl_lst.extend(new_runs[:-1]) # don't take last one in case mid-run

%o return rl_lst[:terms]

%o print(aupton(86)) # _Michael S. Branicky_, Apr 03 2021

%Y Cf. A308092, A342937.

%K nonn,base

%O 1,1

%A _Peter Kagey_, Mar 31 2021