base_n_square_pattern := proc(x, n, len) local y, A, alpha, newx, i: y := x: A := Array(1..len): for alpha to len do newx := ListTools:-Reverse(convert(y, base, n)): for i to nops(newx) do newx[i] := newx[i]^2 od: y := sum(newx[j], j = 1..nops(newx)): A[alpha] := y od: [x, op(convert(A, list))] end proc: