-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcavity_map.js
68 lines (61 loc) · 1.73 KB
/
cavity_map.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
function processData(input) {
// Helpers !..
function isFirstLastRow(cellNumber) {
if(cellNumber < mapSize && cellNumber > (mapSize * mapSize) - mapSize) {
return true;
}
return false;
}
function onBorderArea(cellNumber) {
if(cellNumber === 0 ||
cellNumber % mapSize === 0 ||
((cellNumber - (mapSize - 1)) % mapSize === 0) ||
(cellNumber - (mapSize - 1) === 0)) {
return true;
}
return false;
}
function isCavity(cellNum) {
if(!(isFirstLastRow(cellNum))){
if(map[cellNum] > map[cellNum+1] && map[cellNum] > map[cellNum -1] &&
map[cellNum] > map[cellNum + mapSize] &&
map[cellNum] > map[cellNum - mapSize]) {
return true;
}
}
return false;
}
function replaceWithCavity(cellNum) {
map[cellNum] = 'X';
}
//Enter your code here
var inputArray = input.split("\n");
var mapSize = Number(inputArray[0]);
var map = [];
var resultString = '';
for(var i = 1; i <= mapSize; i++) {
var row = inputArray[i].split("");
for(var j = 0; j < row.length; ++j) {
map.push(Number(row[j]));
}
}
for(var i = 0; i <map.length; ++i) {
if(!onBorderArea(i) && isCavity(i)) {
replaceWithCavity(i);
}
resultString += map[i];
if( (i + 1) % mapSize === 0) {
resultString += '\n';
}
}
console.log(resultString);
}
process.stdin.resume();
process.stdin.setEncoding("ascii");
_input = "";
process.stdin.on("data", function (input) {
_input += input;
});
process.stdin.on("end", function () {
processData(_input);
});