This works completely as expected.
Horizontal
Start X = 5 : Start Y = 4
nextX = 4 : NextY = : 4 : counter = : 1 Cells remaining :28
nextX = 3 : NextY = : 4 : counter = : 2 Cells remaining :27
nextX = 2 : NextY = : 4 : counter = : 3 Cells remaining :26
nextX = 1 : NextY = : 4 : counter = : 4 Cells remaining :25
nextX = 0 : NextY = : 4 : counter = : 5 Cells remaining :24
nextX = 0 : NextY = : 3 : counter = : 6 Cells remaining :23
nextX = 0 : NextY = : 2 : counter = : 7 Cells remaining :22
nextX = 0 : NextY = : 1 : counter = : 8 Cells remaining :21
nextX = 0 : NextY = : 0 : counter = : 9 Cells remaining :20
nextX = 1 : NextY = : 0 : counter = : 10 Cells remaining :19
nextX = 2 : NextY = : 0 : counter = : 11 Cells remaining :18
nextX = 3 : NextY = : 0 : counter = : 12 Cells remaining :17
nextX = 4 : NextY = : 0 : counter = : 13 Cells remaining :16
nextX = 5 : NextY = : 0 : counter = : 14 Cells remaining :15
nextX = 5 : NextY = : 1 : counter = : 15 Cells remaining :14
nextX = 4 : NextY = : 1 : counter = : 16 Cells remaining :13
nextX = 3 : NextY = : 1 : counter = : 17 Cells remaining :12
nextX = 2 : NextY = : 1 : counter = : 18 Cells remaining :11
nextX = 1 : NextY = : 1 : counter = : 19 Cells remaining :10
nextX = 1 : NextY = : 2 : counter = : 20 Cells remaining :9
nextX = 2 : NextY = : 2 : counter = : 21 Cells remaining :8
nextX = 3 : NextY = : 2 : counter = : 22 Cells remaining :7
nextX = 4 : NextY = : 2 : counter = : 23 Cells remaining :6
nextX = 5 : NextY = : 2 : counter = : 24 Cells remaining :5
nextX = 5 : NextY = : 3 : counter = : 25 Cells remaining :4
nextX = 4 : NextY = : 3 : counter = : 26 Cells remaining :3
nextX = 3 : NextY = : 3 : counter = : 27 Cells remaining :2
nextX = 2 : NextY = : 3 : counter = : 28 Cells remaining :1
nextX = 1 : NextY = : 3 : counter = : 29 Cells remaining :0
The only change to the code is to swap the gridWidth and gridHeight.
The first child is incorrect for the von Neumann neighbourhood with a distance of 1.
in the film you can see the finish is correct as the last child is surrounded with occupied cells.
Vertical
Start X = 4 : Start Y = 5
nextX = 3 : NextY = : 0 : counter = : 1 Cells remaining :28
nextX = 2 : NextY = : 0 : counter = : 2 Cells remaining :27
nextX = 1 : NextY = : 0 : counter = : 3 Cells remaining :26
nextX = 0 : NextY = : 0 : counter = : 4 Cells remaining :25
nextX = 0 : NextY = : 1 : counter = : 5 Cells remaining :24
nextX = 1 : NextY = : 1 : counter = : 6 Cells remaining :23
nextX = 2 : NextY = : 1 : counter = : 7 Cells remaining :22
nextX = 3 : NextY = : 1 : counter = : 8 Cells remaining :21
nextX = 4 : NextY = : 1 : counter = : 9 Cells remaining :20
nextX = 4 : NextY = : 0 : counter = : 10 Cells remaining :19
This is the same as the above with a new start location of the bottom
left hand corner and the first child is correct.
However the run completes when there is an empty space in the bottom row.
It is as if the bottom row is not recognised.
Vertical2
Start X = 0 : Start Y = 5
nextX = 0 : NextY = : 4 : counter = : 1 Cells remaining :28
nextX = 0 : NextY = : 3 : counter = : 2 Cells remaining :27
nextX = 0 : NextY = : 2 : counter = : 3 Cells remaining :26
nextX = 0 : NextY = : 1 : counter = : 4 Cells remaining :25
nextX = 0 : NextY = : 0 : counter = : 5 Cells remaining :24
nextX = 1 : NextY = : 0 : counter = : 6 Cells remaining :23
nextX = 2 : NextY = : 0 : counter = : 7 Cells remaining :22
nextX = 3 : NextY = : 0 : counter = : 8 Cells remaining :21
nextX = 4 : NextY = : 0 : counter = : 9 Cells remaining :20
nextX = 4 : NextY = : 1 : counter = : 10 Cells remaining :19
nextX = 3 : NextY = : 1 : counter = : 11 Cells remaining :18
nextX = 2 : NextY = : 1 : counter = : 12 Cells remaining :17
nextX = 1 : NextY = : 1 : counter = : 13 Cells remaining :16
nextX = 1 : NextY = : 2 : counter = : 14 Cells remaining :15
nextX = 2 : NextY = : 2 : counter = : 15 Cells remaining :14
nextX = 3 : NextY = : 2 : counter = : 16 Cells remaining :13
nextX = 4 : NextY = : 2 : counter = : 17 Cells remaining :12
nextX = 4 : NextY = : 3 : counter = : 18 Cells remaining :11
nextX = 3 : NextY = : 3 : counter = : 19 Cells remaining :10
nextX = 2 : NextY = : 3 : counter = : 20 Cells remaining :9
nextX = 1 : NextY = : 3 : counter = : 21 Cells remaining :8
nextX = 1 : NextY = : 4 : counter = : 22 Cells remaining :7
nextX = 2 : NextY = : 4 : counter = : 23 Cells remaining :6
nextX = 3 : NextY = : 4 : counter = : 24 Cells remaining :5
nextX = 4 : NextY = : 4 : counter = : 25 Cells remaining :4