// // Created by cteam31 on 10/21/23. // #include #include #include #include #include using namespace std; char toChange(char a, char b, char c, const vector& rules){ int r = 0; r += (a == 'X' ? 4 : 0); r += (b == 'X' ? 2 : 0); r += (c == 'X' ? 1 : 0); return rules[r] ? 'X' : '.'; } void printState(const string& toPrint) { for(unsigned i = 1; i < toPrint.length()-1 ; i++) { cout << toPrint[i]; } cout << endl; } int main() { vector rules(8, false); unsigned automaton; unsigned iterations; cin >> automaton; cin >> iterations; string initialState; initialState.push_back('.'); while(!cin.eof()) { char inp; cin >> inp; if(cin.good()) initialState.push_back(inp); } initialState.push_back('.'); int len = initialState.length()-2; //cout << initialState << endl; for(int i = 0; i < 8; i++) { if(automaton % 2 != 0) { rules[i] = true; } automaton = automaton/2; } // cout << endl; // for(const auto& rule : rules) { // cout << rule << endl; // } // cout << endl; string nextState = initialState; for(unsigned i = 0; i < iterations; i++) { for (int i = 1; i <= len; i++) { nextState[i] = toChange(initialState[i - 1], initialState[i], initialState[i + 1], rules); } printState(nextState); initialState = nextState; } return 0; }