Показать сообщение отдельно
  #1 (permalink)  
Старый 18.11.2017, 15:42
Интересующийся
Отправить личное сообщение для victornalchik Посмотреть профиль Найти все сообщения от victornalchik
 
Регистрация: 18.11.2017
Сообщений: 21

Перебор элементов для массива вокруг элемента
Уважаемые форумцы, подскажите пожалуйста.
Имеется массив 9x9 стоящий из 0 и 1.
Для каждого элемента нужно просмотреть близлежащие вокруг него (т.е. он сам в центре, а вокруг 8 клеток)и если они равны 1 увеличить счетчик на 1.

При переборе если элемент в массиве не существует например (i=-1 и j =-1 для левой угловой клетки) выдается ошибка в консоль, поэтому в ручную обрабатываю угловые клетки и боковые. Вот пример работающего кода.

Имеются ли более изящные способы обработки клеток вокруг элемента?
if (i == 0 || j == 0 || i == row - 1 || j == column - 1) {
                            if (i == 0 || j == 0) {
                                if (i == 0 && j == 0) {
                                    array[i][j + 1] == 1 ? ++count : count;
                                    array[i + 1][j] == 1 ? ++count : count;
                                    array[i + 1][j + 1] == 1 ? ++count : count;
                                }
                                if (i == 0 && j != 0 && j != column - 1) {
                                    array[i][j - 1] == 1 ? ++count : count;
                                    array[i][j + 1] == 1 ? ++count : count;
                                    array[i + 1][j - 1] == 1 ? ++count : count;
                                    array[i + 1][j] == 1 ? ++count : count;
                                    array[i + 1][j + 1] == 1 ? ++count : count;
                                }
                                if (i != 0 && i != row - 1 && j == 0) {
                                    array[i - 1][j] == 1 ? ++count : count;
                                    array[i - 1][j + 1] == 1 ? ++count : count;
                                    array[i][j + 1] == 1 ? ++count : count;
                                    array[i + 1][j] == 1 ? ++count : count;
                                    array[i + 1][j + 1] == 1 ? ++count : count;
                                }
                            }
                            if (i == row - 1 || j == column - 1) {
                                if (i == 0 && j == column - 1) {
                                    array[i][j - 1] == 1 ? ++count : count;
                                    array[i + 1][j - 1] == 1 ? ++count : count;
                                    array[i + 1][j] == 1 ? ++count : count;
                                }
                                if (i == row - 1 && j == 0) {
                                    array[i - 1][j] == 1 ? ++count : count;
                                    array[i - 1][j + 1] == 1 ? ++count : count;
                                    array[i][j + 1] == 1 ? ++count : count;
                                }
                                if (i == row - 1 && j == column - 1) {
                                    array[i - 1][j - 1] == 1 ? ++count : count;
                                    array[i - 1][j] == 1 ? ++count : count;
                                    array[i][j - 1] == 1 ? ++count : count;
                                }
                                if (i != 0 && i != row - 1 && j == column - 1) {
                                    array[i - 1][j - 1] == 1 ? ++count : count;
                                    array[i - 1][j] == 1 ? ++count : count;
                                    array[i][j - 1] == 1 ? ++count : count;
                                    array[i + 1][j - 1] == 1 ? ++count : count;
                                    array[i + 1][j] == 1 ? ++count : count;
                                }
                                if (i == row - 1 && j != 0 && j != column - 1) {
                                    array[i - 1][j - 1] == 1 ? ++count : count;
                                    array[i - 1][j] == 1 ? ++count : count;
                                    array[i - 1][j + 1] == 1 ? ++count : count;
                                    array[i][j - 1] == 1 ? ++count : count;
                                    array[i][j + 1] == 1 ? ++count : count;
                                }
                            }
                            // console.log(count);

                        } else {
                            array[i - 1][j - 1] == 1 ? ++count : count;
                            array[i - 1][j] == 1 ? ++count : count;
                            array[i - 1][j + 1] == 1 ? ++count : count;
                            array[i][j - 1] == 1 ? ++count : count;
                            array[i][j + 1] == 1 ? ++count : count;
                            array[i + 1][j - 1] == 1 ? ++count : count;
                            array[i + 1][j] == 1 ? ++count : count;
                            array[i + 1][j + 1] == 1 ? ++count : count;
                            // console.log(count);


                        }

Последний раз редактировалось victornalchik, 19.11.2017 в 07:52.
Ответить с цитированием