**I** had another lazy weekend go at code golf, trying to code in the most condensed way the following task. Provided with a square matrix *A* of positive integers, keep iterating the steps

- take the highest square
*𝑥²*in*A*. - find the smallest adjacent neighbour 𝑛
- replace
*x²*with x and n with*nx*

until no square is left (with neighbour defined as either horizontally or vertically and without wrapping around). While I managed a 217 bytes solution, compared with Robin’s 179b improvement, which remains surprising readable!, the puzzle offers two further questions:

- is there a non-iterative way to find the final matrix B?
- the puzzle assumes that A satisfies that at each step, the highest square
*x²*and the smallest neighbour*n*will be unique, and that the sequence will not repeat forever. Is there a fool-proof way to check this is the case?