login
The OEIS is supported by the many generous donors to the OEIS Foundation.

 

Logo
Hints
(Greetings from The On-Line Encyclopedia of Integer Sequences!)
A327296 a(n) is the decimal value of the largest binary palindrome that can be obtained from the digits of the binary representation of n. 1

%I #58 Sep 25 2023 15:04:37

%S 0,1,1,3,1,5,5,7,1,9,9,7,9,7,7,15,1,17,17,21,17,21,21,27,17,21,21,27,

%T 21,27,27,31,1,33,33,21,33,21,21,51,33,21,21,51,21,51,51,31,33,21,21,

%U 51,21,51,51,31,21,51,51,31,51,31,31,63,1,65,65,73,65,73

%N a(n) is the decimal value of the largest binary palindrome that can be obtained from the digits of the binary representation of n.

%C a(n) is the largest-valued binary palindrome that can be constructed from the binary representation of n. The palindrome may not have a leading 0.

%C When constructing a palindrome from a binary string, digits may only be permuted and deleted. I.e., the constructed palindrome will contain the same number or fewer 1's and 0's as the original binary string.

%C The algorithm is as follows:

%C If there is an odd number of 1's in the original binary string, start by placing a 1 in the middle of the output palindrome. Note that the remaining number of 1's is now even. If the remaining number of 1's is zero, then the constructed palindrome is simply "1" because the constructed palindrome cannot have leading zeros. If the remaining number of 1's is greater than zero, then place the remaining 0's evenly on either side of the previously placed "1". Because the output must be a palindrome, if the original string contains an odd number of 0's, then one of the 0's will be discarded. Lastly, place the remaining 1's on either end of the constructed palindrome.

%C If there is an even number of 1's in the original binary string, start by placing all of the 0's from the original string in the center of the palindrome, then place the 1's evenly on either side of the 0's.

%H Ian Band, <a href="/A327296/b327296.txt">Table of n, a(n) for n = 0..4094</a>

%e The largest palindrome that can be constructed:

%e For 101 it is 101, thus a(5) = 5.

%e For 1000 it is 1, thus a(8) = 1.

%e For 1010 it is 1001, thus a(10) = 9.

%e For 1011 it is 111, thus a(11) = 7.

%t a[n_] := Block[{o,z}, {o,z} = DigitCount[n, 2]; If[o==1, 1, If[OddQ@ o, {o,z} = Floor[{o,z} /2]; 2^(z + o) + (2^o - 1) (1 + 2^(o + 1 + 2 z)), o = o/2; (2^o - 1) (1 + 2^(o + z))]]]; a /@ Range[0, 70] (* _Giovanni Resta_, Sep 16 2019 *)

%o (Python)

%o def a(n):

%o #convert n to binary string

%o bin_str = str(bin(n))[2:]

%o #count 1's and 0's in the string

%o zeros = bin_str.count('0')

%o ones = len(bin_str) - zeros

%o if(ones == 1 or ones == 0):

%o return ones

%o pal = ""

%o if(ones % 2 == 1):

%o #start by placing a '1' in the middle of the string

%o pal = '1'

%o #place as many 0's around the central '1' as possible

%o for i in range(0, zeros >> 1):

%o pal = '0' + pal + '0'

%o else:

%o #place all 0's in the center

%o for i in range(0, zeros):

%o pal += '0'

%o #place the remaining 1's (guaranteed to be an even number, because one '1' was placed in the middle) on either side of the palindrome

%o for i in range(0, ones >> 1):

%o pal = '1' + pal + '1'

%o #return integer value of the constructed palindrome

%o return int(pal, 2)

%Y Cf. A006995 (binary palindromes), A057148.

%K base,nonn,easy

%O 0,4

%A _Ian Band_, Sep 16 2019

%E More terms from _Giovanni Resta_, Sep 16 2019

Lookup | Welcome | Wiki | Register | Music | Plot 2 | Demos | Index | Browse | More | WebCam
Contribute new seq. or comment | Format | Style Sheet | Transforms | Superseeker | Recents
The OEIS Community | Maintained by The OEIS Foundation Inc.

License Agreements, Terms of Use, Privacy Policy. .

Last modified July 21 00:28 EDT 2024. Contains 374461 sequences. (Running on oeis4.)