Найти и проверить непосредственные соседи данного исходного узла двумерной матрицы? - PullRequest
0 голосов
/ 28 февраля 2020

Я работаю над проектом Javascript для визуализатора поиска пути, где у меня возникают трудности с поиском и проверкой непосредственных соседей исходного узла в 2D-матрице.

Постановка задачи : Учитывая отсортированную 4X3 2D матрицу, скажем, массив = [{1,2,3,4}, {5,6,7,8}, {9,10,11,12}], в котором мы должны найти непосредственные соседи (ВЛЕВО, ВПРАВО, ВВЕРХ, ВНИЗ) данного числа. Легко вычислить влево или вправо , просто сложив или вычтя 1 и добавив или вычтя 4 для дна или вверх , но для элементов в крайнем конце.

  • Как мы можем проверить, что возвращаемое число является соседом или нет? *

Пример: сосед (5 ) = [1,6,9] (4 не сосед)

также сосед (7) = [3,6,8,11]


         left = source -1 ;
         right = source +1 ;
         top = source - 4 ;
         bottom = source +4;

enter image description here

1 Ответ

1 голос
/ 28 февраля 2020

Чтобы сформировать действительный список соседей, вы должны проверить наличие границы

col = (source - 1) % width    
if (col > 0)
   left = source - 1
if (col < width - 1)
   right = source + 1 
line = (source - 1) / width     
if (line > 0)
   top = source  - width 
if (line < height - 1)
   bottom = source + width 
...