Сортировка двухмерного массива объектов со статусом - PullRequest
0 голосов
/ 29 мая 2018

У меня есть массив объектов с некоторым статусом, как здесь.

1 1 1 1 0 1
1 0 1 1 0 1
0 0 1 1 0 0
x x x x x x
0 0 1 1 0 0
0 0 1 1 0 0
1 0 0 0 0 1
1 1 1 1 1 1

x - это статус объекта diff, я хочу изменить статус на 2 для всех 1 касания x и других 1 касания 1 касанияx и т. д. Таким образом, мой результат должен выглядеть следующим образом.

2 2 2 2 0 1
2 0 2 2 0 1
0 0 2 2 0 0
x x x x x x
0 0 2 2 0 0
0 0 2 2 0 0
1 0 0 0 0 1
1 1 1 1 1 1

На самом деле я хотел бы вернуть массив объектов, который должен измениться с 1 на 2. Я, хотя о функции рекурсии, функция будет проверять, касается состояния объектаравно 1, если это изменение статуса и это делается для касания объекта со статусом 1. Я не могу представить, как эта функция может выглядеть, я никогда не использовал рекурсию: /

Если это имеет значение, я использую TypeScript.

Ваша помощь будет для меня Святым Граалем.

1 Ответ

0 голосов
/ 29 мая 2018

Вам нужно начать Заполнение флудом из x ячеек.

Рекурсивная реализация очень проста (четырехстороннее подключение):

Flood-fill (node, target-color, replacement-color):
 1. If target-color is equal to replacement-color, return.
 2. If the color of node is not equal to target-color, return.
 3. Set the color of node to replacement-color.
 4. Perform Flood-fill (one step to the south of node, target-color, replacement-color).
    Perform Flood-fill (one step to the north of node, target-color, replacement-color).
    Perform Flood-fill (one step to the west of node, target-color, replacement-color).
    Perform Flood-fill (one step to the east of node, target-color, replacement-color).
 5. Return.

, но есть и нерекурсивные реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...