from itertools import count, islice, product as P

def only(s, D=1): # numbers with >= D digits only from s
    yield from (int("".join(p)) for d in count(D) for p in P(s, repeat=d))
    
def agen(): # generator of terms
    aset, an, minan = {0}, 0, 1
    while True:
        yield an
        an, s = minan, set(str(an))
        use = "".join(c for c in "0123456789" if c not in s)
        for an in only(use, D=len(str(minan))):
            if an not in aset: break
        aset.add(an)
        while minan in aset: minan += 1
a = agen()
for _ in range(100):
    n = next(a)
    print(n)

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: