cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A374176 a(n) is the maximum number of consecutive bit changes in the binary representation of n.

Original entry on oeis.org

0, 1, 0, 1, 2, 1, 0, 1, 1, 3, 2, 1, 2, 1, 0, 1, 1, 2, 1, 3, 4, 2, 2, 1, 1, 3, 2, 1, 2, 1, 0, 1, 1, 2, 1, 2, 3, 1, 1, 3, 3, 5, 4, 2, 2, 2, 2, 1, 1, 2, 1, 3, 4, 2, 2, 1, 1, 3, 2, 1, 2, 1, 0, 1, 1, 2, 1, 2, 3, 1, 1, 2, 2, 4, 3, 1, 2, 1, 1, 3, 3, 3, 3, 5, 6, 4, 4, 2, 2, 3, 2, 2, 2, 2, 2, 1, 1, 2, 1, 2, 3, 1, 1, 3, 3
Offset: 1

Views

Author

Hugo Pfoertner, Jul 05 2024

Keywords

Examples

			a(1117) = 3:
  1117_2 = [1 0 0 0 1 0 1 1 1 0 1]
             ^     ^ ^ ^     ^ ^
             1       3        2
            consecutive changes
		

Crossrefs

Cf. A000975 (index of first occurrence of n).

Programs

  • Maple
    b:= n-> `if`(n<2, [0$2], (f-> (t-> [t, max(t, f[2])])(
            `if`(n mod 4 in {0, 3}, 0, f[1]+1)))(b(iquo(n, 2)))):
    a:= n-> b(n)[2]:
    seq(a(n), n=1..105);  # Alois P. Heinz, Jul 07 2024
  • PARI
    a(n) = {my(b=digits(n,2), d=#b, m=0, j=b[1], c=0); for(k=2, d, if(b[k]!=j, c++; m=max(m,c), c=0); j=b[k]); m}
    
  • Python
    def a(n):
        b, c, m = bin(n)[2:], 0, 0
        for i in range(len(b)-1):
            if b[i] != b[i+1]: c += 1
            else: m = max(m, c); c = 0
        return max(m, c)
    print([a(n) for n in range(1, 89)]) # Michael S. Branicky, Jul 06 2024
    
  • Python
    # using formula
    from itertools import groupby
    def a(n): return max((len(list(g)) for k, g in groupby(bin(n^(n>>1))[3:]) if k=="1"), default=0)
    print([a(n) for n in range(1, 89)]) # Michael S. Branicky, Jul 06 2024

Formula

a(n) = A038374(A038554(n)), with A038374(0) = 0. - Michael S. Branicky, Jul 06 2024