login
Number of distinct runs in base-2 digits of n.
57

%I #24 Aug 11 2024 10:35:28

%S 1,2,1,2,2,2,1,2,2,2,3,2,3,2,1,2,2,3,3,3,2,3,3,2,3,3,2,2,3,2,1,2,2,3,

%T 3,2,3,4,3,3,3,2,3,4,3,3,3,2,3,4,2,4,3,2,3,2,3,3,3,2,3,2,1,2,2,3,3,3,

%U 3,4,3,3,2,3,4,3,4,4,3,3,3,3,4,3,2,3

%N Number of distinct runs in base-2 digits of n.

%C Every positive integers occurs infinitely many times.

%C ***

%C Guide to related sequences:

%C Base b # runs # distinct runs

%C 2 A005811 A297770

%C 3 A043555 A297771

%C 4 A043556 A297772

%C 5 A043557 A297773

%C 6 A043558 A297774

%C 7 A043559 A297775

%C 8 A043560 A297776

%C 9 A043561 A297777

%C 10 A043562 A297778

%C 11 A043563 A297779

%C 12 A043564 A297780

%C 13 A043565 A297781

%C 14 A043566 A297782

%C 15 A043567 A297783

%C 16 A043568 A297784

%H Clark Kimberling, <a href="/A297770/b297770.txt">Table of n, a(n) for n = 1..10000</a>

%e 27 in base-2: 1,1,0,1,1; three runs, of which 2 are distinct: 0 and 11, so that a(27) = 2.

%t b = 2; s[n_] := Length[Union[Split[IntegerDigits[n, b]]]]

%t Table[s[n], {n, 1, 200}]

%o (Python)

%o from itertools import groupby

%o def A297770(n): return len(set(map(lambda x:tuple(x[1]),groupby(bin(n)[2:])))) # _Chai Wah Wu_, Jul 13 2024

%o (PARI) apply( {A297770(n)=my(r=[0,0], c); while(n, my(d=bitand(n,1), L=valuation(n+d, 2)); !bittest(r[1+d], L) && c++ && r[1+d] += 1<<L; n>>=L); c}, [0..99]) \\ _M. F. Hasler_, Jul 13 2024

%o (PARI) a(n) = my(s=strjoin(binary(n)), v=vecsort(concat(strsplit(s, "1"), strsplit(s, "0")), , 8)); #v-(v[1]==""); \\ _Ruud H.G. van Tol_, Aug 05 2024

%Y Cf. A005811 (number of runs, not necessarily distinct).

%K nonn,base,easy

%O 1,2

%A _Clark Kimberling_, Jan 26 2018