big = 1 000 000 s = 0 S = Set([]) unseen = 1 seen(v) = if (v < big, bit test(s, v), set search(S, v)) see(v) = if (v < big, s = bit or(s, 2^v), S = set union(S, Set([v]))); while (seen(unseen), unseen++) t = 0 z = 0 ok(v, keep) = { my (d=digits(v), tt=t, zz=z); for (i=1, #d, if ((tt+=d[i])/zz++ > 1, return (0); ); ); if (keep, [t,z] = [tt,zz]; ); return (1); } other() = { my (can = [0]); for (w=1, oo, my (newcan = []); for (c=1, #can, for (d=if (w==1, 1, 0), 9, my (v=can[c]*10 + d); if (ok(v, !seen(v)), if (!seen(v), see(v); return (v), newcan = concat(newcan, v); ); ); ); ); can = newcan; ); } for (n=1, 10 000, print (n " " other() " " unseen)) quit