(Haskell)
-- import Data.Set (fromList, deleteFindMin, insert)
a033075 n = a033075_list !! (n-1)
a033075_list = f (fromList [1..9]) where
f s | d == 0 = m : f (insert (10*m+1) s')
| d == 9 = m : f (insert (10*m+8) s')
| otherwise = m : f (insert (10*m+d-1) (insert (10*m+d+1) s'))
where (m, s') = deleteFindMin s
d = mod m 10
(PARI) diff(v)=vector(#v-1, i, v[i+1]-v[i])
(Python)
def ok(n):
s = str(n)
return all(abs(int(s[i]) - int(s[i+1])) == 1 for i in range(len(s)-1))
(Python) # faster version for initial segment of sequence
def gen(d, s=None): # generate remaining d digits, from start digit s
if d == 0:
yield tuple()
return
if s == None:
yield from [(i, ) + g for i in range(1, 10) for g in gen(d-1, s=i)]
else:
if s > 0:
yield from [(s-1, ) + g for g in gen(d-1, s=s-1)]
if s < 9:
yield from [(s+1, ) + g for g in gen(d-1, s=s+1)]
def agentod(digits):
for d in range(1, digits+1):
yield from [int("".join(map(str, g))) for g in gen(d, s=None)]