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 countneighborsconst metaverset& board, sizet row, sizet column
int count ;
sizet rows board.size;
sizet cols boardsize;
for int dr ; dr ; dr
for int dc ; dc ; dc
if dr && dc continue; Skip the cell itself
sizet newrow row dr;
sizet newcol column dc;
if newrow rows && newcol cols
count boardnewrownewcol;
return count;
Determine if a cell should be occupied in the next generation
bool occupiedinnexttickbool currentlyoccupied, int neighborcount
if currentlyoccupied
return neighborcount neighborcount ;
return neighborcount ;
Generate the next state of the Metaverse
metaverset tickconst metaverset& board
sizet rows board.size;
sizet cols boardsize;
metaverset nextboardrows std::vectorcols false;
for sizet row ; row rows; row
for sizet col ; col cols; col
int neighbors countneighborsboard row, col;
nextboardrowcol occupiedinnexttickboardrowcol neighbors;
return nextboard;
Resize the Metaverse grid to the given size
bool resizemetaverseint size, metaverset& board
if size return false;
board.resizesize std::vectorsize false;
return true;
Parse a row of the citizenship file and update the board
bool citizenshiprowtometaverserowconst std::string& inputrow, int row, metaverset& board
if row board.size inputrow.length board.size return false;
for sizet col ; col inputrow.size; col
boardrowcolinputrowcol;
return true;
Read the configuration from the file
bool readmetaverseconfigurationlinefromfilestd::ifstream& metaversefile, int& size, int& generations
std::string configline;
if std::getlinemetaversefile, configline return false;
sizet commapos configline.find;
if commapos std::string::npos return false;
try
size std::stoiconfigline.substr commapos;
generations std::stoiconfigline.substrcommapos ;
catch const std::exception&
return false;
return true;
Initialize the Metaverse grid from the file
bool initializemetaversefromfilestd::ifstream& metaversefile, metaverset& metaverse, int& generations
int size ;
int actualrow ;
if readmetaverseconfigurationlinefromfilemetaversefile, size, generations
return false;
if resizemetaversesize metaverse
return false;
metaversefile std::ws;
while metaversefile.eof
std::string line;
if std::getlinemetaversefile, line
return false;
if citizenshiprowtometaverserowline actualrow, metaverse
return false;
actualrow;
metaversefile std::ws;
return actualrow size;
Simulate the Metaverse over multiple generations
void modelmetaverseconst metaverset& startingmetaverse, int generations
metaverset currentmetaverse startingmetaverse;
for int gen ; gen generations; gen
if gen generations
std::cout "Final Generation:"
;
else
std::cout "Generation gen :
;
displaymetaversestd::cout, currentmetaverse;
if gen generations
currentmetaverse tickcurrentmetaverse;
Display the Metaverse in a formatted grid
template
void displaymetaversestd::ostream& os const std::vector& metaverse
os ;
for sizet i ; i metaversesize; i
os ;
os
;
for const auto& row : metaverse
os ;
for const auto& cell : row
if cell
os ;
else
os ;
os
;
os ;
for sizet i ; i metaversesize; 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 :
Final Generation:
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
