|
|
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).
|
|
0
|
|
|
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
(list;
graph;
refs;
listen;
history;
text;
internal format)
|
|
|
OFFSET
|
1,2
|
|
LINKS
|
|
|
EXAMPLE
|
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.
|
|
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]
|
|
PROG
|
(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
|
|
CROSSREFS
|
|
|
KEYWORD
|
base,nonn
|
|
AUTHOR
|
|
|
STATUS
|
approved
|
|
|
|