\\ A321485 a(n,base=10) = { my (v=0, w=max(1,#digits(n,base))); \\ number of remaining digits to process (including possibly leading zeros) while (w, forstep (k=w, 1, -1, \\ number of repetitions (maximize) forstep (b=floor(w/k), 1, -1, \\ block size (maximize) my (d=digits(n \ base^(w-b*k), base^b)); \\ k leading blocks if (d==[] \\ only zeros || (#d==k && #Set(d)==1), \\ k equal nonzero blocks my (x=if (#d, d[1], 0)); \\ block value v = v * base^(#digits(k,base)+b) + (k * base^b + x); \\ append "k" and block value (with leading zeros) \\ remove digits that have been processed w -= b*k; n = n % base^w; \\ proceed with remaining digits break (2); ); ); ); ); return (v); } for (n=0, 10 000, print (n " " a(n))) quit