A367811 Lexicographically earliest sequence of distinct positive terms such that the Levenshtein distance (Ld) between a(n) and a(n+1) is equal to the first digit of a(n+1).
1, 10, 2, 12, 11, 13, 14, 15, 16, 17, 18, 19, 20, 120, 3, 21, 121, 22, 122, 23, 123, 24, 124, 25, 125, 26, 126, 27, 127, 28, 128, 29, 129, 30, 130, 100, 31, 131, 101, 32, 132, 102, 33, 133, 103, 34, 134, 104, 35, 135, 105, 36, 136, 106, 37, 137, 107, 38, 138, 108, 39, 139, 109, 119, 110, 111, 112, 113
Offset: 1
Examples
a(1) = 1 and a(2) = 10 are separated by an Ld of 1, and 1 is the 1st digit of a(2) a(2) = 10 and a(3) = 2 are separated by an Ld of 2, and 2 is the 1st digit of a(3) a(3) = 2 and a(4) = 12 are separated by an Ld of 1, and 1 is the 1st digit of a(4) a(4) = 12 and a(5) = 11 are separated by an Ld of 1, and 1 is the 1st digit of a(5) a(5) = 11 and a(6) = 13 are separated by an Ld of 1, and 1 is the 1st digit of a(6) etc.
Links
- Éric Angelini, More Levenshtein distances, Personal blog, December 2023.
Crossrefs
Cf. A367810.
Programs
-
Mathematica
a[1]=1;a[n_]:=a[n]=(k=1;While[MemberQ[Array[a,n-1],k]||EditDistance[ToString@a[n-1],ToString@k]!=First@IntegerDigits@k,k++];k);Array[a,68]
-
Python
from itertools import islice from Levenshtein import distance as Ld def agen(): # generator of terms an, aset, mink = 1, {1}, 2 while True: yield an s, k = str(an), mink while k in aset or Ld(s, sk:=str(k)) != int(sk[0]): k += 1 an = k aset.add(k) while mink in aset: mink += 1 print(list(islice(agen(), 68))) # Michael S. Branicky, Dec 01 2023