OFFSET
1,1
COMMENTS
The final terms of the corresponding sequences are given in A330129.
LINKS
Michael S. Branicky, Table of n, a(n) for n = 1..10000
Eric Angelini, Michael S. Branicky, Giovanni Resta, N. J. A. Sloane, and David W. Wilson, The Comma Sequence: A Simple Sequence With Bizarre Properties, arXiv:2401.14346, Youtube
MATHEMATICA
nxt[x_] := Block[{p=1, n=x}, While[n >= 10, n = Floor[n/10]; p *= 10]; p (n + 1)]; a[n_] := Block[{nT=1, nX=n, w1, w2, w3, x, it, stp, oX}, stp = 100; w1 = w2 = w3 = 0; While[True, oX = nX; nT++; x = 10*Mod[oX, 10]; nX = SelectFirst[Range[9], IntegerDigits[oX + x + #][[1]] == # &, 0]; If[nX == 0, Break[], nX = nX + oX + x]; If[nT == stp, stp += 100; w1=w2; w2=w3; w3=nX; If[w3 + w1 == 2 w2 && Mod[w3 - w2, 100] == 0, it = Floor[(nxt[nX] - nX - 1)/(w3 - w2)]; nT += it*100; nX += (w3 - w2)*it; w3=nX; stp += it*100]]]; nT - 1]; Array[a, 30]
PROG
(Python)
def nxt(x):
p, n = 1, x
while n >= 10:
n //= 10
p *= 10
return p * (n + 1)
def a(n):
nT, nX, w1, w2, w3, stp = 1, n, 0, 0, 0, 100
while True:
oX = nX
nT += 1
x = 10*(oX%10)
nX = next((y for y in range(1, 10) if str(oX+x+y)[0] == str(y)), 0)
if nX == 0: break
else: nX += oX + x
if nT == stp:
stp += 100
w1, w2, w3 = w2, w3, nX
if w3 + w1 == 2*w2 and (w3 - w2)%100 == 0:
it = (nxt(nX) - nX - 1)//(w3 - w2)
nT += it*100
nX += (w3 - w2)*it
w3 = nX
stp += it*100
return nT - 1
print([a(n) for n in range(1, 30)]) # Michael S. Branicky, Nov 18 2023 after Giovanni Resta
CROSSREFS
KEYWORD
nonn,base
AUTHOR
Giovanni Resta, Dec 02 2019
EXTENSIONS
Escape clause added to definition by N. J. A. Sloane, Nov 14 2023
STATUS
approved