login
A273376
Pick any pair of "1" digits in the sequence. Those two "1"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, 20, 21, 22, 23, 24, 25, 26, 27, 12, 28, 29, 13, 30, 32, 33, 14, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 15, 45, 46, 47, 48, 49, 50, 31, 52, 53, 54, 55, 41, 56, 57, 58, 59, 60, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 74, 75, 51, 76, 77, 78, 79, 80, 82, 83, 84, 85, 86, 87, 88, 89, 61, 90, 92, 93, 94, 95, 96, 97, 98, 99, 200, 202, 203, 204, 205, 206, 201
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
EXAMPLE
The ten "k"s in the starting segment here are different [0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 20, 21,] and respectively equal to 8,10,11,15,1,2,6,0,4,3.
Indeed, there are k=8 digits between [1] and the "1" of [10] which are 2,3,4,5,6,7,8,9; there are k=10 digits between [1] and the first "1" of [11] which are 2,3,4,5,6,7,8,9,1,0; there are k=11 digits between [1] and the second "1" of [11] which are 2,3,4,5,6,7,8,9,1,0,1; there are k=15 digits between [1] and the "1" of [21] which are 2,3,4,5,6,7,8,9,1,0,1,1,2,0,2.
There is k=1 digit between the "1" of [10] and the first "1" of [11] which is 0; there are k=2 digits between the "1" of [10] and the second "1" of [11] which are 0 and 1; there are k=6 digits between the "1" of [10] and the "1" of [21] which are 0,1,1,2,0,2.
There are k=0 digits between the first "1" of [11] and the second "1" of [11]; there are k=4 digits between the first "1" of [11] and the "1" of [21] which are 1,2,0,2.
There are k=3 digits between the second "1" of [11] and the "1" of [21] which are 2,0 and 2.
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 == '1' for j in locs1)
out |= set(i-j for j in range(len(s)-1) for i in range(j+1, len(s)) if '1' == 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 ('1' not in (s:=str(k)) or not newdiffs(s, alen, locs1, diffs1)&diffs1))
stran = str(an)
if '1' in stran:
diffs1 |= newdiffs(stran, alen, locs1, diffs1)
locs1.extend([alen+i for i, c in enumerate(stran, 1) if c == '1'])
alen += len(stran)
aset.add(an)
while mink in aset: mink += 1
print(list(islice(agen(), 100))) # Michael S. Branicky, Oct 01 2025
KEYWORD
nonn,base
AUTHOR
STATUS
approved