\\ 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