login
A358405
a(1) = 0; for n > 1, let a(n-1) = m; if a(n-1) is the first occurrence of m then a(n) = 0, but if there is a k < n-1 with a(k) = m, a(n) is the maximum of n-1-k 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
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] == n-1 else max(n-1-prev[an], first[an])
if an1 not in first: first[an1] = prev[an1] = n
prev[an] = n-1
an = an1
print(list(islice(agen(), 87))) # Michael S. Branicky, Nov 14 2022
CROSSREFS
KEYWORD
nonn,look
AUTHOR
Scott R. Shannon, Nov 14 2022
STATUS
approved