code: private int getNeighbor(int solution, int [] neighbor) {
      int row = getRow(solution) ;
      int col = getColumn((solution)) ;
  
      int r ;
      int c ;
  
      r = (row + neighbor[0]) % this.rows ;
      if (r < 0)
        r = rows - 1;
  
      c = (col + neighbor[1]) % this.columns ;
      if (c < 0)
        c = columns - 1 ;
  
      return this.mesh[r][c];
    }
docs: Returns the neighbor of solution
  @param solution Represents the location of the solution
  @param neighbor Represents the neighbor we want to get as a shift of solution. The first component
  represents the shift on rows, and the second the shift on column
  @return