-
Notifications
You must be signed in to change notification settings - Fork 0
/
2d-chess-board.js
65 lines (44 loc) · 2.18 KB
/
2d-chess-board.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
/*
D. Шахматная доска
Ограничение времени 1 секунда (фактическое использование на тестах – до 65ms)
Ограничение памяти 64Mb (фактическое использование на тестах – до 5.50Mb)
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Из шахматной доски по границам клеток выпилили связную (не распадающуюся на части) фигуру без дыр. Требуется определить ее периметр.
Формат ввода
Сначала вводится число N (1 ≤ N ≤ 64) – количество выпиленных клеток. В следующих N строках вводятся координаты выпиленных клеток, разделенные пробелом (номер строки и столбца – числа от 1 до 8). Каждая выпиленная клетка указывается один раз.
Формат вывода
Выведите одно число – периметр выпиленной фигуры (сторона клетки равна единице).
Пример 1
Ввод
3
1 1
1 2
2 1
Вывод
8
Пример 2
Ввод
1
8 8
Вывод
4
Примечания
1) Вырезан уголок из трех клеток. Сумма длин его сторон равна 8.
2) Вырезана одна клетка. Ее периметр равен 4.
*/
const fs = require('fs');
const input = fs.readFileSync('input.txt', 'utf8').toString().trim().split('\n');
const board = new Array(10).fill(0).map(() => new Array(10).fill(1));
const list = new Array(input.length - 1);
for (let i = 1; i < input.length; ++i) {
const [y, x] = input[i].trim().split(' ').map((value) => parseInt(value));
board[y][x] = 0;
list[i - 1] = [y, x];
}
let result = 0;
for (let i = 0; i < list.length; ++i) {
const [y, x] = list[i];
result += board[y - 1][x] + board[y + 1][x] + board[y][x - 1] + board[y][x + 1];
}
fs.writeFileSync('output.txt', `${result}`);