- neighbor = offsets[direction] + cell_id;
-
- # Make sure we're within limmits of the board
- if ( !(neighbor < 1) && !(neighbor > n)) {
- neighbor_state = substr(board, neighbor, 1);
- live_neighbors += neighbor_state;
- }
+ neighbor_id = offsets[direction] + cell_id;
+
+ # -----------------------------------------------------------------
+ # Real neighbors within boundaries, ghosts beyond that!
+ # -----------------------------------------------------------------
+ if ((neighbor_id >= 1) && (neighbor_id <= n)) {
+ neighbor_state = substr(board, neighbor_id, 1)
+ } else {
+ neighbor_state = get_random_state()
+ };
+
+ live_neighbors += neighbor_state