OFFSET

1,2

COMMENTS

Taking first differences, then applying the RUNS transform gives [1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 5, 1, 1, 1, 13, 1, 1, 1, 13, 1, 1, 1, 29, 1, 1, 1, 29, 1, 1, 1, 61, 1, 1, 1, 61, 1, 1, 1, 125, 1, 1, 1, 125, 1, 1, 1, 253, 1, 1, 1, 253, 1, 1, 1, 509, ...].

If the initial 4 is changed to a 1, this has an obvious regular structure, which could then be analyzed to give a conjectured generating function, just as was done for A354767. See link below.

A more precise conjecture is given in the Formula section.

LINKS

Rémy Sigrist, Table of n, a(n) for n = 1..10000

Michael De Vlieger, Thomas Scheuerle, Rémy Sigrist, N. J. A. Sloane, and Walter Trump, The Binary Two-Up Sequence, arXiv:2209.04108 [math.CO], Sep 11 2022.

Rémy Sigrist, C++ program

N. J. A. Sloane, A conjectured generating function for A354169.

FORMULA

Conjecture from N. J. A. Sloane, Jun 29 2022: (Start)

The following is a conjectured explicit formula for a(n). Basically a(n) = n+2, except that there are four types of n which have a different formula, and there are 6 exceptional values for small n.

Here is the formula, which agrees with the first 10000 terms.

(I) If n = 3*2^(k-1)-3, k >= 2 then a(n) = (n+1)/2, except a(3) = a(9) = 4 and a(21) = 5.

(II) If n = 2^(k+1)-3, k >= 1 then a(n) = (n+1)/2, except a(5) = a(13) = 6 and a(29) = 7.

(III) If n = 3*2^(k-1)-2, k >= 2 then a(n) = n+1.

(IV) If n = 2^(k+1)-2, k >= 1 then a(n) = n+1.

(V) Otherwise a(n) = n+2. (End)

The conjecture is now known to be true. See De Vlieger et al. (2022). - N. J. A. Sloane, Aug 29 2022

PROG

(C++) See Links section.

(Python)

from itertools import count, islice

from collections import deque

from functools import reduce

from operator import or_

def A354774_gen(): # generator of terms

aset, aqueue, b, f = {0, 1, 2}, deque([2]), 2, False

while True:

for k in count(1):

m, j, j2, r, s = 0, 0, 1, b, k

while r > 0:

r, q = divmod(r, 2)

if not q:

s, y = divmod(s, 2)

m += y*j2

j += 1

j2 *= 2

if s > 0:

m += s*2**b.bit_length()

if m not in aset:

if (s := bin(m)[3:]).count('1') == 1:

yield len(s)

aset.add(m)

aqueue.append(m)

if f: aqueue.popleft()

b = reduce(or_, aqueue)

f = not f

break

CROSSREFS

KEYWORD

nonn

AUTHOR

N. J. A. Sloane, Jun 26 2022

STATUS

approved