login
Lexicographically earliest sequence of distinct nonnegative terms such that the Levenshtein distance (Ld) between a(n) and a(n+1) is equal to 2.
3

%I #13 Dec 21 2023 15:17:00

%S 0,11,2,10,3,12,4,13,5,14,6,15,7,16,8,17,9,18,20,1,22,19,21,30,23,31,

%T 24,32,25,33,26,34,27,35,28,36,29,37,40,38,41,39,42,50,43,51,44,52,45,

%U 53,46,54,47,55,48,56,49,57,60,58,61,59,62,70,63,71,64,72,65,73,66,74,67,75,68,76,69,77,80,78

%N Lexicographically earliest sequence of distinct nonnegative terms such that the Levenshtein distance (Ld) between a(n) and a(n+1) is equal to 2.

%H Éric Angelini, <a href="https://cinquantesignes.blogspot.com/2023/12/more-levenshtein-distances.html">More Levenshtein distances</a>, Personal blog, December 2023.

%e a(1) = 0 and a(2) = 11 are separated by an Ld of 2

%e a(2) = 11 and a(3) = 2 are separated by an Ld of 2

%e a(3) = 2 and a(4) = 10 are separated by an Ld of 2

%e a(4) = 10 and a(5) = 3 are separated by an Ld of 2, etc.

%t a[1]=0;a[n_]:=a[n]=(k=1;While[MemberQ[Array[a,n-1],k]||EditDistance[ToString@a[n-1],ToString@k]!=2,k++];k);Array[a,80]

%o (Python)

%o from itertools import islice

%o from Levenshtein import distance as Ld

%o def agen(): # generator of terms

%o an, aset, mink = 0, {0}, 1

%o while True:

%o yield an

%o s, k = str(an), mink

%o while k in aset or Ld(s, str(k)) != 2: k += 1

%o an = k

%o aset.add(k)

%o while mink in aset: mink += 1

%o print(list(islice(agen(), 80))) # _Michael S. Branicky_, Dec 01 2023

%Y Cf. A118763, A367813, A367814, A367815.

%K base,nonn

%O 1,2

%A _Eric Angelini_ and _Giorgos Kalogeropoulos_, Dec 01 2023