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.

A246593 a(n)=n for n <= 2; for n >= 3, a(n) = largest number that can be obtained by swapping two bits in the binary expansion of n.

Original entry on oeis.org

0, 1, 2, 3, 4, 6, 6, 7, 8, 12, 12, 14, 12, 14, 14, 15, 16, 24, 24, 26, 24, 28, 28, 30, 24, 28, 28, 30, 28, 30, 30, 31, 32, 48, 48, 50, 48, 52, 52, 54, 48, 56, 56, 58, 56, 60, 60, 62, 48, 56, 56, 58, 56, 60, 60, 62, 56, 60, 60, 62, 60, 62, 62, 63, 64, 96, 96
Offset: 0

Views

Author

N. J. A. Sloane, Sep 03 2014

Keywords

Comments

In both this sequence and A246594 you are not allowed to touch any of the invisible 0's before the leading 1.
Swap first 0 with last 1 in the binary expansion of n or return n if no such swap is possible. - Chai Wah Wu, Sep 08 2014

Examples

			If n = 17 = 10001_2 then a(17) = 11000_2 = 24.
		

Crossrefs

Programs

  • Python
    from itertools import combinations
    def A246593(n):
        if n <= 1:
            return n
        else:
            s, y = bin(n)[2:], n
            for i in combinations(range(len(s)),2):
                s2 = int(s[:i[0]]+s[i[1]]+s[i[0]+1:i[1]]+s[i[0]]+s[i[1]+1:],2)
                if s2 > y:
                    y = s2
            return y
    # Chai Wah Wu, Sep 05 2014
    
  • Python
    # implement algorithm in comment
    def A246593(n):
        s = bin(n)[2:]
        s2 = s.rstrip('0')
        s3 = s2.lstrip('1')
        return(int(s2[:-len(s3)]+'1'+s3[1:-1]+'0'+s[len(s2):],2) if (len(s3) > 0 and n > 1) else n)
    # Chai Wah Wu, Sep 08 2014

Extensions

Corrected definition and more terms from Alois P. Heinz, Sep 04 2014