Here is a 7x7 matrix:
11 21 31 41 51 61 71
12 22 32 42 52 62 72
13 23 33 43 53 63 73
14 24 34 44 54 64 74
15 25 35 45 55 65 75
16 26 36 46 56 66 76
17 27 37 47 57 67 77
The numbers 11, 21, 33
… are the values of the positions.
If a radius, the number of row and the number of column are given, how to find the neighbors?
For example, function neighbors(radius = 1, rowNumber = 3, columnNumber = 3)
should return a matrix:
22 32 42
23 33 43
24 34 44
function neighbors(radius = 2, rowNumber = 3, columnNumber = 3)
should return a matrix:
11 21 31 41 51
12 22 32 42 52
13 23 33 43 53
14 24 34 44 54
15 25 35 45 55
When the neighbor is out of boundary, its value should be 0.
For example, function neighbors(radius = 2, rowNumber = 1, columnNumber = 1)
should return a matrix
0 0 0 0 0
0 0 0 0 0
0 0 11 21 31
0 0 12 22 32
0 0 13 23 33
I've been thing about this problem for 3 days, but I still can't develop a solution for it.
It might be hard in other languages but in Python this is quite easy. Here is a function that can do what you asked for:
def neighbors(radius, row_number, column_number):
return [[a[i][j] if i >= 0 and i < len(a) and j >= 0 and j < len(a[0]) else 0
for j in range(column_number-1-radius, column_number+radius)]
for i in range(row_number-1-radius, row_number+radius)]
Here is a 2D list:
a = [[ 11, 21, 31, 41, 51, 61, 71],
[ 12, 22, 32, 42, 52, 62, 72],
[ 13, 23, 33, 43, 53, 63, 73],
[ 14, 24, 34, 44, 54, 64, 74],
[ 15, 25, 35, 45, 55, 65, 75],
[ 16, 26, 36, 46, 56, 66, 76],
[ 17, 27, 37, 47, 57, 67, 77]]
See List comprehensions.
Updated missing "and" in the solution - pls review
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With