aboutsummaryrefslogtreecommitdiff
path: root/LightsOut/main.cpp
blob: 6b49d5df54753b210cfea7a172bd29d4939a5df7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<bits/stdc++.h>

using namespace std;

bool safeMove(int i, int j) {
  if(i < 0 || i > 2 || j < 0 || j > 2) {
    return false;
  }
  return true;
}

vector<vector<int>> sumAdjacents(vector<vector<int>> v) {
  vector<vector<int>> ans(3, vector<int> (3));
  vector<int> dx = {1, 0, -1, 0};
  vector<int> dy = {0, 1, 0, -1};
  for(int i = 0; i < v.size();i++) {
    for(int j = 0; j < v[i].size(); j++) {
      ans[i][j] += v[i][j];
      for(int k = 0; k < 4; k++) {
        int x = i + dx[k];
        int y = j + dy[k];
        if(safeMove(x, y)) {
          ans[i][j] += v[x][y];
        }
      }
      (ans[i][j] & 1) ? ans[i][j] = 0 : ans[i][j] = 1;
    }
  }
  return ans;
}

int main () {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
  vector<vector<int>> v (3, vector<int> (3));
  for(auto &x : v) {
    for(auto &y : x) {
      cin >> y;
    }
  }
  for(auto x : sumAdjacents(v)) {
    for(auto z : x) {
      cout << z;
    }
    cout << endl;
  }
}