// Step by step across the field, with tests at the edges
A simulation runs one step at a time. move() checks the cell ahead and the battery before Pip steps, run() follows a command string and logs anything it does not know, and tests at the edges show the rover still works after every change.