1
var matrixScore = function (grid) {
2
let flip = (i, rowOrCol) => {
3
// helper function for flipping row and column
4
if (rowOrCol) {
5
for (let idx in grid[i]) {
6
grid[i][idx] = grid[i][idx] === 1 ? 0 : 1;
7
}
8
} else {
9
for (let idx in grid) {
10
grid[idx][i] = grid[idx][i] === 1 ? 0 : 1;
11
}
12
}
13
};
14

15
for (let i = 0; i < grid.length; i++) {
16
// flip rows only if leftmost bit is 0
17
if (grid[i][0] !== 1) {
18
flip(i, true);
19
}
20
}
21

22
for (let i = 1; i < grid[0].length; i++) {
23
//flip column only if the number of 1s is less than 0s, as all bits hold equal values in a column
24
let ones = 0;
25
for (let j in grid) {
26
ones += grid[j][i];
27
}
28
if (ones < grid.length / 2) flip(i, false);
29
}
30

31
return grid.reduce((a, b) => a + parseInt(b.join(""), 2), 0);
32
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0