Question: #include metaverse.h #include display.h #include #include #include #include #include / / Function to count the number of occupied neighbors for a given cell

#include "metaverse.h"
#include "display.h"
#include
#include
#include
#include
#include
// Function to count the number of occupied neighbors for a given cell
int count_neighbors(const metaverse_t& board, size_t row, size_t column){
int count =0;
size_t rows = board.size();
size_t cols = board[0].size();
for (int dr =-1; dr =1; ++dr){
for (int dc =-1; dc =1; ++dc){
if (dr ==0 && dc ==0) continue; // Skip the cell itself
size_t new_row = row + dr;
size_t new_col = column + dc;
if (new_row rows && new_col cols){
count += board[new_row][new_col];
}
}
}
return count;
}
// Determine if a cell should be occupied in the next generation
bool occupied_in_next_tick(bool currently_occupied, int neighbor_count){
if (currently_occupied){
return neighbor_count ==2|| neighbor_count ==3;
}
return neighbor_count ==3;
}
// Generate the next state of the Metaverse
metaverse_t tick(const metaverse_t& board){
size_t rows = board.size();
size_t cols = board[0].size();
metaverse_t next_board(rows, std::vector(cols, false));
for (size_t row =0; row rows; ++row){
for (size_t col =0; col cols; ++col){
int neighbors = count_neighbors(board, row, col);
next_board[row][col]= occupied_in_next_tick(board[row][col], neighbors);
}
}
return next_board;
}
// Resize the Metaverse grid to the given size
bool resize_metaverse(int size, metaverse_t& board){
if (size =0) return false;
board.resize(size, std::vector(size, false));
return true;
}
// Parse a row of the citizenship file and update the board
bool citizenship_row_to_metaverse_row(const std::string& input_row, int row, metaverse_t& board){
if (row >= board.size()|| input_row.length()!= board.size()) return false;
for (size_t col =0; col input_row.size(); ++col){
board[row][col]=(input_row[col]=='1');
}
return true;
}
// Read the configuration from the file
bool read_metaverse_configuration_line_from_file(std::ifstream& metaverse_file, int& size, int& generations){
std::string config_line;
if (!std::getline(metaverse_file, config_line)) return false;
size_t comma_pos = config_line.find(',');
if (comma_pos == std::string::npos) return false;
try {
size = std::stoi(config_line.substr(0, comma_pos));
generations = std::stoi(config_line.substr(comma_pos +1));
}
catch (const std::exception&){
return false;
}
return true;
}
// Initialize the Metaverse grid from the file
bool initialize_metaverse_from_file(std::ifstream& metaverse_file, metaverse_t& metaverse, int& generations){
int size =0;
int actual_row =0;
if (!read_metaverse_configuration_line_from_file(metaverse_file, size, generations)){
return false;
}
if (!resize_metaverse(size, metaverse)){
return false;
}
metaverse_file >> std::ws;
while (!metaverse_file.eof()){
std::string line;
if (!std::getline(metaverse_file, line)){
return false;
}
if (!citizenship_row_to_metaverse_row(line, actual_row, metaverse)){
return false;
}
actual_row++;
metaverse_file >> std::ws;
}
return actual_row == size;
}
// Simulate the Metaverse over multiple generations
void model_metaverse(const metaverse_t& starting_metaverse, int generations){
metaverse_t current_metaverse = starting_metaverse;
for (int gen =0; gen = generations; ++gen){
if (gen == generations){
std::cout "Final Generation:" "
";
}
else {
std::cout "Generation " gen ":
";
}
display_metaverse(std::cout, current_metaverse);
if (gen generations){
current_metaverse = tick(current_metaverse);
}
}
}
// Display the Metaverse in a formatted grid
template
void display_metaverse(std::ostream& os, const std::vector>& metaverse){
os "|";
for (size_t i =0; i metaverse[0].size(); ++i){
os "--";
}
os "|
";
for (const auto& row : metaverse){
os "|";
for (const auto& cell : row){
if (cell){
os "+";
}
else {
os "";
}
}
os "|
";
}
os "|";
for (size_t i =0; i metaverse[0].size(); ++i){
os "--";
}
os "|
";
}
Final Generation:
my final generation does not look like what my professor is asking for can someone help me figure out why? (the black image is mine)
Generation 7:
Final Generation:
#include "metaverse.h " #include "display.h "

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Programming Questions!