-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathC_get_neighbours.py
67 lines (55 loc) · 2.22 KB
/
C_get_neighbours.py
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
"""
C. Соседи
Дана матрица. Нужно написать функцию, которая для элемента возвращает всех его
соседей. Соседним считается элемент, находящийся от текущего на одну ячейку
влево, вправо, вверх или вниз. Диагональные элементы соседними не считаются.
Например, в матрице A соседними элементами для (0, 0) будут 2 и 0.
А для (2, 1) –— 1, 2, 7, 7.
Формат ввода
В первой строке задано n — количество строк матрицы. Во второй — количество
столбцов m. Числа m и n не превосходят 1000. В следующих n строках задана
матрица. Элементы матрицы — целые числа, по модулю не превосходящие 1000.
В последних двух строках записаны координаты элемента, соседей которого
нужно найти. Индексация начинается с нуля.
Формат вывода
Напечатайте нужные числа в возрастающем порядке через пробел.
Пример 1
Ввод
4
3
1 2 3
0 2 6
7 4 1
2 7 0
3
0
Вывод
7 7
"""
from typing import List, Tuple
from ..timing import timing
@timing
def get_neighbours(matrix: List[List[int]], row: int, col: int) -> List[int]:
h = []
if col + 1 < len(matrix[0]):
h.append(matrix[row][col + 1])
if col - 1 >= 0:
h.append(matrix[row][col - 1])
if row + 1 < len(matrix):
h.append(matrix[row + 1][col])
if row - 1 >= 0:
h.append(matrix[row - 1][col])
return h
@timing
def read_input() -> Tuple[List[List[int]], int, int]:
n = int(input())
_ = int(input())
matrix = []
for _ in range(n):
matrix.append(list(map(int, input().strip().split())))
row = int(input())
col = int(input())
return matrix, row, col
if __name__ == "__main__":
matrix, row, col = read_input()
print(*sorted(get_neighbours(matrix, row, col)))