Как найти структуры (содержащие X количество ячеек) в сгенерированном ландшафте, хранящемся в 2D-массиве?

#php #algorithm #multidimensional-array

#php #алгоритм #многомерный массив

Вопрос:

В настоящее время я работаю над генератором мирового ландшафта для браузерной игры. Сгенерированная карта хранится в 2D-массиве, который выглядит следующим образом (0 = вода, 1 = земля):

 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 1 0 0 0 0 1 1 1 1 0 0 0
0 0 1 1 1 1 1 1 1 1 0 0 0 0 0
0 1 1 1 0 0 1 1 1 1 1 0 0 0 0
0 1 0 1 1 1 1 0 1 1 1 1 1 0 0
0 1 1 1 1 1 1 1 1 1 1 1 1 0 0
... and so on.
 

Дело в том, что код, который я использую для генерации земли, часто создает озера внутри себя разного размера. Мне действительно нравится концепция озер, но я не хочу, чтобы озера были слишком маленькими. Есть ли способ найти озера, площадь которых (например) меньше 10 «квадратных пикселей», чтобы я мог их стереть?

Комментарии:

1. Конечно. Проверьте соседей.

2. Сканируйте карту по строкам сверху вниз. Когда вы нажмете 0, заполните область чем-то, что не используется на карте, возможно, 2. Если область слишком мала, снова заполните 1. Наконец, отсканируйте еще раз и верните все 2 обратно в 0.

3. Представляет ли диагональное соединение одно озеро или два соседних озера?