login

Year-end appeal: Please make a donation to the OEIS Foundation to support ongoing development and maintenance of the OEIS. We are now in our 61st year, we have over 378,000 sequences, and we’ve reached 11,000 citations (which often say “discovered thanks to the OEIS”).

A366198
Any a(n) replacing the first digit of a(n+1) forms a palindrome. This is the lexicographically earliest sequence of distinct nonnegative integers with this property.
2
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 19, 11, 21, 12, 31, 13, 41, 14, 51, 15, 61, 16, 71, 17, 81, 18, 91, 29, 22, 32, 23, 42, 24, 52, 25, 62, 26, 72, 27, 82, 28, 92, 39, 33, 43, 34, 53, 35, 63, 36, 73, 37, 83, 38, 93, 49, 44, 54, 45, 64, 46, 74, 47, 84, 48, 94, 59, 55, 65, 56, 75, 57, 85, 58, 95
OFFSET
1,3
COMMENTS
No integer > 1 ending in zero will appear in the sequence.
For n >= 10 the concatenation of a(n) and A217657(a(n+1)) is a palindrome.
LINKS
FORMULA
For n >= 92, a(n) = 10*a(n-81) + 90 - 9*(a(n-81) mod 10). - David A. Corneth, Oct 04 2023
EXAMPLE
a(9) = 8 replacing the first digit of a(10) = 9 forms 8, a palindrome;
a(10) = 9 replacing the first digit of a(11) = 19 forms 99, a palindrome;
a(11) = 19 replacing the first digit of a(12) = 11 forms 191, a palindrome;
a(12) = 11 replacing the first digit of a(13) = 21 forms 111, a palindrome;
a(13) = 21 replacing the first digit of a(14) = 12 forms 212, a palindrome; etc.
MATHEMATICA
terms=75; b[0]=0;
b[n_]:=b[n]=(k=1; While[MemberQ[Array[b, n-1], k]||!PalindromeQ[FromDigits@Flatten@ReplacePart[IntegerDigits@k, 1-> IntegerDigits@b[n-1]]], k++]; k); t=0; While[Length[a=Join[Range[0, 9], Flatten@Table[FromDigits@Flatten@Insert[#, Table[9, i], -2]&/@(IntegerDigits/@Array[b, 9^2, 10]), {i, 0, t++}]]]<terms]; a[[;; terms]] (* Giorgos Kalogeropoulos, Oct 04 2023 *)
PROG
(Python)
from itertools import count, islice
def ispal(n): return (s:=str(n))==s[::-1]
def agen(): # generator of terms
an, seen = 0, set()
while True:
yield an; seen.add(an); s = str(an)
an = next(k for k in count(0) if k not in seen and ispal(s+str(k)[1:]))
print(list(islice(agen(), 80))) # Michael S. Branicky, Oct 04 2023
(Python) # faster version suitable for generating b-file
from sympy import isprime
from itertools import count, islice, product
def pals(digs):
yield from digs
for d in count(2):
for p in product(digs, repeat=d//2):
left = "".join(p)
for mid in [[""], digs][d%2]:
yield left + mid + left[::-1]
def folds(s): # generator of suffixes of palindromes starting with s
for i in range((len(s)+1)//2, len(s)+1):
for mid in [True, False]:
t = s[:i] + (s[:i-1][::-1] if mid else s[:i][::-1])
if t.startswith(s):
yield t[len(s):]
yield from ("".join(p)+s[::-1] for p in pals("0123456789"))
def agen():
s, seen = "0", {"0"}
while True:
yield int(s)
found = False
for end in folds(s):
for start in "123456789":
t = start + end
if t not in seen:
found = True; break
if found: break
s, seen = t, seen | {t}
print(list(islice(agen(), 60))) # Michael S. Branicky, Oct 04 2023
CROSSREFS
KEYWORD
base,nonn
AUTHOR
Eric Angelini, Oct 03 2023
STATUS
approved