function board2 = life_step ( board1 )
%
%  Count neighbors.
%
  neighbors = life_neighbors ( board1 );
%
%  Locate alive things that must die,
%  and dead things that should come alive.
%
  alive_die = find ( board1 & ( neighbors < 2 | 3 < neighbors ) );
  dead_awake = find ( ~ board1 & neighbors == 3 );
%
%  BOARD2 starts as a copy of BOARD1.
%
  board2 = board1;
%
%  Apply the changes.
%
  board2(alive_die) = 0;
  board2(dead_awake) = 1;

  return
end
