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.

A283187 a(0) = 0; a(1) = 1; a(2*n) = 2*a(n), a(2*n+1) = a(n) + (-1)^a(n+1).

Original entry on oeis.org

0, 1, 2, 2, 4, 3, 4, 3, 8, 3, 6, 4, 8, 3, 6, 4, 16, 7, 6, 4, 12, 7, 8, 5, 16, 7, 6, 4, 12, 7, 8, 5, 32, 15, 14, 8, 12, 7, 8, 5, 24, 11, 14, 8, 16, 7, 10, 6, 32, 15, 14, 8, 12, 7, 8, 5, 24, 11, 14, 8, 16, 7, 10, 6, 64, 31, 30, 16, 28, 15, 16, 9, 24, 11, 14, 8, 16, 7, 10, 6, 48, 23, 22, 12, 28, 15, 16, 9, 32, 15, 14
Offset: 0

Views

Author

Ilya Gutkovskiy, Mar 02 2017

Keywords

Examples

			a(0) = 0;
a(1) = 1;
a(2) = a(2*1) = 2*a(1) = 2*1 = 2;
a(3) = a(2*1+1) = a(1) + (-1)^a(2) = 1 + (-1)^2 = 2;
a(4) = a(2*2) = 2*a(2) = 2*2 = 4;
a(5) = a(2*2+1) = a(2) + (-1)^a(3) = 2 + (-1)^2 = 3, etc.
		

Crossrefs

Cf. A000079 (fixed points), A006165, A087808, A283165.

Programs

  • Mathematica
    a[0] = 0; a[1] = 1; a[n_] := If[EvenQ[n], 2 a[n/2], a[(n - 1)/2] + (-1)^a[(n + 1)/2]]; Table[a[n], {n, 0, 90}]
  • PARI
    a(n) = if (n<2, n, if (n%2==0, 2*a(n/2), a((n-1)/2)+(-1)^(a(n+1)/2)));
    tabl(nn)={for (n=0, nn, print1(a(n), ", "); ); };
    tabl(90); \\ Indranil Ghosh, Mar 03 2017
    
  • Python
    def a(n):
        if n==0 or n==1: return n
        if n%2==0: return int(2*a(n/2))
        else: return int(a((n-1)/2)+(-1)**a((n+1)/2)) # Indranil Ghosh, Mar 03 2017
    
  • Python
    from functools import lru_cache
    @lru_cache(maxsize=None)
    def A283187(n): return n if n <= 1 else A283187(n//2) + (-1 if A283187((n+1)//2) % 2 else 1) if n % 2 else 2*A283187(n//2) # Chai Wah Wu, Mar 08 2022