login
A273883
Pick any pair of "5" digits in the sequence. Those two "5"s are separated by k digits. This is the lexicographically earliest sequence of distinct terms in which all the resulting values of k are distinct.
10
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 35, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 60, 52, 61, 62, 63, 53, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 76, 77, 78, 75, 79
OFFSET
1,3
COMMENTS
The sequence starts with a(1)=0. It is then always extended with the smallest integer not yet present and not leading to a contradiction (which would mean producing a value of k already seen).
LINKS
PROG
(Python)
from itertools import count, islice
def newdiffs(s, alen, locs1, diffs1):
out = set(alen+i-j for i, c in enumerate(s, 1) if c == '5' for j in locs1)
out |= set(i-j for j in range(len(s)-1) for i in range(j+1, len(s)) if '5' == s[i] == s[j])
return out
def agen(): # generator of terms
an, locs1, diffs1, mink, aset, alen = 0, [], set(), 1, {0}, 1
while True:
yield an
an = next(k for k in count(mink) if k not in aset and ('5' not in (s:=str(k)) or not newdiffs(s, alen, locs1, diffs1)&diffs1))
stran = str(an)
if '5' in stran:
diffs1 |= newdiffs(stran, alen, locs1, diffs1)
locs1.extend([alen+i for i, c in enumerate(stran, 1) if c == '5'])
alen += len(stran)
aset.add(an)
while mink in aset: mink += 1
print(list(islice(agen(), 74))) # Michael S. Branicky, Oct 01 2025
CROSSREFS
Cf. A273376 (equivalent with digit "1").
Sequence in context: A273058 A044922 A346447 * A132145 A272284 A322554
KEYWORD
nonn,base
AUTHOR
STATUS
approved