%I #29 Sep 09 2014 03:37:27
%S 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,
%T 28,30,28,30,30,31,32,48,48,50,48,52,52,54,48,56,56,58,56,60,60,62,48,
%U 56,56,58,56,60,60,62,56,60,60,62,60,62,62,63,64,96,96
%N 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.
%C In both this sequence and A246594 you are not allowed to touch any of the invisible 0's before the leading 1.
%C 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
%H Alois P. Heinz, <a href="/A246593/b246593.txt">Table of n, a(n) for n = 0..8192</a>
%e If n = 17 = 10001_2 then a(17) = 11000_2 = 24.
%o (Python)
%o from itertools import combinations
%o def A246593(n):
%o ....if n <= 1:
%o ........return n
%o ....else:
%o ........s, y = bin(n)[2:], n
%o ........for i in combinations(range(len(s)),2):
%o ............s2 = int(s[:i[0]]+s[i[1]]+s[i[0]+1:i[1]]+s[i[0]]+s[i[1]+1:],2)
%o ............if s2 > y:
%o ................y = s2
%o ........return y
%o # _Chai Wah Wu_, Sep 05 2014
%o (Python)
%o # implement algorithm in comment
%o def A246593(n):
%o ....s = bin(n)[2:]
%o ....s2 = s.rstrip('0')
%o ....s3 = s2.lstrip('1')
%o ....return(int(s2[:-len(s3)]+'1'+s3[1:-1]+'0'+s[len(s2):],2) if (len(s3) > 0 and n > 1) else n)
%o # _Chai Wah Wu_, Sep 08 2014
%Y Cf. A241816, A246591, A246592, A246594.
%K nonn,base
%O 0,3
%A _N. J. A. Sloane_, Sep 03 2014
%E Corrected definition and more terms from _Alois P. Heinz_, Sep 04 2014