-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathminesweeper.js
37 lines (36 loc) · 1.09 KB
/
minesweeper.js
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
export const annotate = (input) => {
const list = input.map(el => el.split('').map(item => item === ' ' ? +item : item));
const validElement = (i, j) => {
if (i < 0 || i > list.length - 1) {
return false;
}
if (j < 0 || j > list[i].length - 1) {
return false;
}
if (list[i][j] === '*') {
return false;
}
return true;
};
for (let i = 0; i < list.length; i++) {
for (let j = 0; j < list[i].length; j++) {
const current = list[i][j];
if (current === '*') {
validElement(i - 1, j - 1) && list[i - 1][j - 1]++;
validElement(i - 1, j) && list[i - 1][j]++;
validElement(i - 1, j + 1) && list[i - 1][j + 1]++;
validElement(i, j - 1) && list[i][j - 1]++;
validElement(i, j + 1,) && list[i][j + 1]++;
validElement(i + 1, j - 1) && list[i + 1][j - 1]++;
validElement(i + 1, j) && list[i + 1][j]++;
validElement(i + 1, j + 1) && list[i + 1][j + 1]++;
}
}
}
return list.map(el => el.map(item => {
if (item === 0) {
return ' ';
}
return item;
}).join(''));
};