

A358405


a(1) = 0; for n > 1, let a(n1) = m; if a(n1) is the first occurrence of m then a(n) = 0, but if there is a k < n1 with a(k) = m, a(n) is the maximum of n1k and j, where a(j) is the first occurrence of m in the sequence.


4



0, 0, 1, 0, 2, 0, 2, 5, 0, 3, 0, 2, 5, 8, 0, 4, 0, 2, 6, 0, 3, 11, 0, 3, 10, 0, 3, 10, 25, 0, 4, 16, 0, 3, 10, 25, 29, 0, 5, 26, 0, 3, 10, 25, 29, 37, 0, 6, 29, 37, 46, 0, 5, 14, 0, 3, 14, 54, 0, 4, 29, 37, 46, 51, 0, 6, 19, 0, 3, 13, 0, 3, 10, 30, 0, 4, 16, 45, 0, 4, 16, 32, 0, 4, 16, 32, 82
(list;
graph;
refs;
listen;
history;
text;
internal format)



OFFSET

1,5


COMMENTS

This sequence uses the same selection rules as A358402 but here the maximum of the two offsets is chosen for a(n). The terms form an unusual pattern for larger values of n; see the linked images.
See A358406 for the index where each number first appears.


LINKS



EXAMPLE

a(5) = 2 as a(4) = 0 and a(2) = 0, these being separated by two terms.
a(8) = 5 as a(7) = 2 and 2 appears as the fifth term of the sequence. Note that the number of terms between the two previous occurrences of 2 is 7  5 = 2 which is smaller than 5, so 5 is chosen.


MATHEMATICA

nn = 120; q[_] = c[_] = 0; m = a[1] = 0; Do[If[c[#] == 0, k = 0; c[#] = q[#] = n  1, k = Max[n  1  c[#], q[#]]; c[#] = n  1] &[m]; a[n] = m = k; If[k == u, While[c[u] > 0, u++]], {n, 2, nn}]; Array[a, nn]


PROG

(Python)
from itertools import count, islice
def agen():
an, first, prev = 0, {0: 1}, {0: 1}
for n in count(2):
yield an
an1 = 0 if first[an] == n1 else max(n1prev[an], first[an])
if an1 not in first: first[an1] = prev[an1] = n
prev[an] = n1
an = an1


CROSSREFS



KEYWORD



AUTHOR



STATUS

approved



