base_10_square_pattern := proc(x) local A, z, m, numlist, t, j, y: A := []: z := x: A := [x, op(A)]: while evalb(z in {1, 89}) = false do m := length(convert(z, string)): numlist := ListTools:-Reverse([seq(i, i = 1..m)]): t := 0: for j in numlist do y := floor(z/(10^(j - 1))): t := t + y^2: z := z - y*10^(j - 1): od: z := t: A := [op(A), t]: od: A end proc: