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.

A297824 The number of iterations to remove all runs from the binary string 11011100...n (formed by concatenating the first n binary numbers, see A058935(n)).

Original entry on oeis.org

0, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 9, 10, 10, 10, 10, 10, 10, 9, 8, 8, 10, 7, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 10, 9, 10, 9, 10, 10, 8, 9, 9, 10, 10, 9, 7, 9, 10, 10, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
Offset: 1

Views

Author

Rick L. Shepherd, Jan 06 2018

Keywords

Comments

Each iteration removes all runs of two or more identical bits that appear at the beginning of that iteration. By definition, the bits of the final string will be an initial segment, possibly empty, of 0, 1, 0, 1, ... (A000035) or 1, 0, 1, 0, ... (A059841). A297825 gives the lengths of the final strings; the sign of each nonzero term indicates which case occurs.

Examples

			a(21) = 6 because 1101110010111011110001001101010111100110111101111100001000110010100111010010101 --> 01001010100011010110101 --> 01101010100101 --> 0010101101 -->  101001 --> 1011 --> 10, where each arrow points to the result of one iteration.
		

Crossrefs

Programs

  • PARI
    {remove_runs(v) = my(w, run_found = 0);
    if(#v == 1, w = v, w = []);
    for(k = 2, #v,
       if(v[k-1] == v[k],
         run_found = 1,
         if(run_found == 0, w = concat(w, v[k-1]), run_found = 0);
         if(k == #v, w = concat(w, v[k]))
       )
    ); w}
    {a(n) = my(v = [], L,  c = 0); \\ remove "write(...);" if don't need other b-file
    for(k = 1, n, v = concat(v, binary(k)));
    L = #v;
    while(1,
      v = remove_runs(v);
      if(#v == L, write("b297825.txt", n, " ", L*(if(L == 0, 0, 2*v[1] - 1))); break, L = #v);
      c++
    ); c}
    for(n = 1, 10000, write("b297824.txt", n, " ", a(n))) \\ created two b-files
Showing 1-1 of 1 results.