#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. Представляет ли диагональное соединение одно озеро или два соседних озера?