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.

Showing 1-1 of 1 results.

A340488 a(n+1) = XOR(a(n),y) for n>=1, where y is the number of m < n such that a(m) = a(n); a(1)=0.

Original entry on oeis.org

0, 0, 1, 1, 0, 2, 2, 3, 3, 2, 0, 3, 1, 3, 0, 4, 4, 5, 5, 4, 6, 6, 7, 7, 6, 4, 7, 5, 7, 4, 0, 5, 6, 5, 1, 2, 1, 5, 0, 6, 2, 6, 3, 7, 3, 6, 0, 7, 2, 7, 1, 4, 1, 7, 0, 8, 8, 9, 9, 8, 10, 10, 11, 11, 10, 8, 11, 9, 11, 8, 12, 12, 13, 13, 12, 14, 14
Offset: 1

Views

Author

Ian Hutchinson, Jan 09 2021

Keywords

Comments

It appears that the graph of the first n terms is similar to the graph of the first n/4 terms for sufficiently large values (n > 100).
It appears that among the first 4^n terms, each integer value less than 2^n appears at least (3/4)*2^n times. This would imply that every positive integer appears an infinite number of times.
Yet another variant of the Van Eck sequence A181391. - N. J. A. Sloane, Jan 10 2021
It follows from the definition that when m appears for the first time, it is immediately followed by m, and then if m is even by m+1. A340494 gives a conjectured generating function for when a number appears for the first time. - Rémy Sigrist and N. J. A. Sloane, Jan 10 2021
Conjectures from Rémy Sigrist, Jan 10 2021 (Start)
It appears that the positions of the 0's are given by A336190, and the "y" sequence appears to be A336033.
For a fixed k > 0, let b(n) be the position of the k-th occurrence of n in A340488, Then the sequence { b(n) - A340494(n) } has period 2^m for some m,
- for k = 2 we have period ( 1 ) (the second occurrence appear next to the first).
- for k = 3 we have period ( 4, 10, 4, 4 ),
- for k = 4 we have period (10, 32, 30, 6, 10, 14, 12, 6). (End)
Theorem: Every number appears.
Proof. (i) If there were only finitely many different numbers in the sequence then one number k (say) would appear infinitely often. As the number of k's reaches the next power of 2, 2^m say, we get a term >= 2^m. So the sequence is unbounded. Contradiction. So there are infinitely many different terms.
(ii) To show that every number appears, consider a k-bit number n, n < 2^k. Let a(m) be the first term >= 2^k, where a(m) = a(m-1) XOR y, with a(m-1) < 2^k and y >= 2^k. Let a(m-1) = t. Since this is at least the 2^k-th copy of t, the sequence contains t XOR 0, t XOR 1, t XOR 2, ..., t XOR 2^k-1, and so contains every number from 0 to 2^k-1, and in particular contains n. QED
- Rémy Sigrist and N. J. A. Sloane, Jan 11 2021
Conjecture: Let pi_i(n) denote the number of occurrences of i in the first n terms. Then pi_0(n) >= pi_i(n) for all i, and the first time pi_0(n) = m, pi_i(n) < m for i>0. - N. J. A. Sloane, Jan 13 2021

Examples

			We start with a(1) = 0. 0 has not appeared before, so we set a(2) to bitxor(0,0), or 0. There has now been one previous appearance of 0, so we set a(3) to bitxor(0,1), or 1. There has been no previous appearance of 1, so we set a(4) to 1. There has now been one previous appearance of 1, so we set a(5) to bitxor(1,1), or 0.
		

Crossrefs

Cf. A181391 (Van Eck), A340496 (partial sums), A340499 (first differences), A340500 (running maximum).
See A340494, A340495 for when n first appears.
Cf. also A336033, A336190.

Programs

  • Maple
    b:= proc(n) option remember; `if`(n<1, 0, b(n-1)+x^a(n)) end:
    a:= proc(n) option remember; `if`(n=1, 0, (t->
          Bits[Xor](t, coeff(b(n-2), x, t)))(a(n-1)))
        end:
    seq(a(n), n=1..100);  # Alois P. Heinz, Apr 14 2021
  • Mathematica
    b[n_] := b[n] = If[n < 1, 0, b[n-1] + x^a[n]];
    a[n_] := a[n] = If[n == 1, 0, With[{t = a[n-1]},
         BitXor[t, Coefficient[b[n - 2], x, t]]]];
    Array[a, 100] (* Jean-François Alcover, Jun 27 2021, after Alois P. Heinz *)
  • PARI
    See Links section.
  • Python
    a340488 = [0]
    repeat = [0] # Running tally for occurrences of each value
    for n in range(3414):
        if(a340488[-1] >= len(repeat)):
            repeat.append(0)
        newValue = (a340488[-1] ^ repeat[a340488[-1]])
        repeat[a340488[-1]] += 1
        a340488.append(newValue)
    
Showing 1-1 of 1 results.