

A340593


a(0) = 0; for n > 0, if n appears in the sequence then a(n) = a(n1)  lastindex(n) if nonnegative and not already in the sequence, otherwise a(n) = a(n1) + lastindex(n), where lastindex(n) is the index of the last appearance of n. Otherwise a(n) = a(n1)  n if nonnegative and not already in the sequence, otherwise a(n) = a(n1) + n.


2



0, 1, 3, 5, 9, 6, 11, 4, 12, 8, 18, 24, 16, 29, 15, 29, 17, 33, 23, 42, 22, 43, 63, 45, 34, 59, 85, 58, 30, 45, 73, 104, 72, 55, 31, 66, 102, 65, 27, 66, 26, 67, 48, 69, 25, 54, 100, 53, 95, 46, 96, 147, 199, 152, 107, 74, 130, 187, 160, 135, 75, 14, 76, 98, 162, 125, 86, 127, 195, 238, 168, 97
(list;
graph;
refs;
listen;
history;
text;
internal format)



OFFSET

0,3


COMMENTS

This sequences uses the same rules as Recamán's sequence A005132 if the value of n itself has not previously appeared in the sequence. However if n has previously appeared then the step size from a(n1) is set to lastindex(n), where lastindex(n) is the sequence index of the last appearance of n.
The smallest value not to have appeared after 1 million terms is 52. It is unknown if all terms eventually appear.


LINKS



EXAMPLE

a(3) = 5 as a(2) = 3 = n, thus the step size from a(2) is 2. As 1 has previously appeared a(3) = a(2) + 2 = 3 + 2 = 5.
a(5) = 6 as a(3) = 5 = n, thus the step size from a(4) is 3. As 6 has not previously appeared a(5) = a(4)  3 = 9  3 = 6.


PROG

(Python)
from itertools import count, islice
def A340593_gen(): # generator of terms
a, ndict = 0, {0:0}
yield 0
for n in count(1):
yield (a:= (am if a>=(m:=ndict[n]) and am not in ndict else a+m) if n in ndict else (an if a>=n and an not in ndict else a+n))
ndict[a] = n


CROSSREFS



KEYWORD

nonn


AUTHOR



STATUS

approved



