void world::write(const world& w, std::ostream& o) { for(size_t col = 0; col < w.cols_; ++col) { for(size_t row = 0; row < w.rows_; ++row) { o << (w.has_cell(row, col) ? 'o' : ' '); } o << std::endl; } }
world world::evolve(const world& w) { world w_next(w); // TODO could this be a bit more object oriented, please? for(size_t col = 0; col < w.cols_; ++col) { for(size_t row = 0; row < w.rows_; ++row) { size_t n = w.neighbours(row, col); if(w.has_cell(row, col)) { if(n < 2) { w_next.put_cell(row, col, false); } else if(n == 2 || n == 3) { w_next.put_cell(row, col, true); } else { w_next.put_cell(row, col, false); } } else { if(n == 3) { w_next.put_cell(row, col, true); } } } } return w_next; }