Найти и проверить непосредственных соседей данного исходного узла 2D-матрицы?

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

Постановка проблемы: для отсортированной 2D-матрицы 4X3, допустим, array = [{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;

введите здесь описание изображения


person KaranManral    schedule 28.02.2020    source источник


Ответы (1)


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

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 
person MBo    schedule 28.02.2020