I will try again to explain what is required.
With regard to the von Neumann neighbourhood
It outputs an array which are the cells West, North, East and South every time.
[ these are the correct cells ]
My single active agent takes the first one of these which is null and spawns one child into that cell and then moves into that child agent cell becoming the active agent.
Each time we move into a new active agent we repeat the von Neumann selection process and spawn a new child until we reach a cell where all of the von Neumann neighbours are occupied.
This works perfectly including the boundary interaction with the exception of the condition where the four cells are occupied.
Your method even works correctly when I change the distance to 2, 4 or 8 which are The connection distances on a Xilinx FPGA this is the underlying purpose of the Agents. I have output a single pass of each of these and Identified the cell placement order is correct.
I need a method which allows me to check if the four cells are occupied and if so pause the run a bit like a checkpoint.
Then I would like to record in a file the number of cells occupied, [I have done this ]
clear the grid of these cells and then continue with a further run with a new start point
[ basically the last cell of the previous run ] repeating a few times.
I have a version where I checkpoint each run but you previously suggested that I should be able to run a few times and just checkpoint after say half of the runs.