How to solve the following exercise?

2 views (last 30 days)
I have to solve the following problem:
Consider a matrix M with only the numbers 1 to 9 as elements.
M =
2 9 3 2 4
8 6 4 8 5
5 7 1 6 4
9 8 9 5 1
Consider one of the elements M(i,j) that's not on the edge of the matrix. Such element always has 8 neighbours. If M(i,j) > 1 and each number from 1 to M(i,j)-1 is one of the 8 neighbours, we say that element is neighboring. If M(i,j) = 1, the element is automatically neighboring.
For example, M(2,2) is neighboring because 1,2,3,4 and 5 are one of the element's neighbours. M(3,4) on the other hand isn't neighboring because 2 and 3 don't occur around the element.
Now, I have to write a function that has 3 inputs: a matrix M and a row- and column index. The function has to control whether de element is neighboring or not and has a logical 0 or 1 as output.
Ellen De Jonghe
Ellen De Jonghe on 14 Jan 2020
I indeed forgot to check the case where M(i,j) = 1, I will try to figure that out.

Sign in to comment.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 14 Jan 2020
Edited: Andrei Bobrov on 14 Jan 2020
function out = find_neighbor(M,i,j)
out = all(ismember(1:M(i,j)-1,M(i-1:i+1,j-1:j+1)));
Andrei Bobrov
Andrei Bobrov on 14 Jan 2020
Thanks Guillaume! I'm fixed.

Sign in to comment.

More Answers (1)

Ellen De Jonghe
Ellen De Jonghe on 14 Jan 2020
That's a very easy one! Thanks.
I seem to always make my scripts much longer than it has to.


Find more on Mathematics in Help Center and File Exchange


Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!