OFFSET
0,5
COMMENTS
To calculate a(n) write down the binary representation of n. Organize the digits in pairs and calculate the xor of these pairs. The result is a(n) in binary.
Conjecture: The index of the first occurrence of k in a is A000695(k). - Ivan N. Ianakiev, Aug 26 2019
LINKS
FORMULA
a(0) = 0, a(4n) = 2*a(n), a(4n+1) = 2*a(n)+1, a(4n+2) = 2*a(n)+1, a(4n+3) = 2*a(n). - Florian Lang, Aug 26 2019
EXAMPLE
For n=19 we have the binary representation 10011 = 01 00 11. Calculating the xor of the pairs gives 1 0 0 which is 4 in binary and therefore a(19) = 4.
MAPLE
a:= n-> `if`(n=0, 0, (r-> 2*a((n-r)/4) +r*(3-r)/2)(irem(n, 4))):
seq(a(n), n=0..100); # Alois P. Heinz, Aug 26 2019
PROG
(Python)
def a(n):
n = [int(k) for k in bin(n)[2:]]
if len(n) % 2 != 0:
n = [0] + n
result = []
for i in range(0, len(n), 2):
result.append(n[i] ^ n[i+1]) #xor
return int("".join([str(k) for k in result]), 2)
(Python)
from itertools import zip_longest
from operator import xor
def A309952(n): return int(''.join(map(lambda x:str(xor(*x)), zip_longest((s:=tuple(int(d) for d in bin(n)[2:]))[::-2], s[-2::-2], fillvalue=0)))[::-1], 2) # Chai Wah Wu, Jun 30 2022
(PARI) a(n) = {my(b = Vecrev(binary(n)), nb = #b\2, val = fromdigits(Vecrev(vector(nb, i, bitxor(b[2*i-1], b[2*i]))), 2)); if (#b % 2, val += 2^nb); val; } \\ Michel Marcus, Aug 26 2019
CROSSREFS
KEYWORD
AUTHOR
Florian Lang, Aug 24 2019
STATUS
approved