Я нашел множество вопросов о том, как найти самый большой смежный прямоугольник в 2D-массиве, и некоторые, которые спрашивают о количестве прямоугольников, но только один, который касается нахождения координат, ширины и высоты всех прямоугольников, необходимых для покрыть площадь 1s в 2D 1s и 0s.
Вопрос (Поиск прямоугольников в сетке 2d-блоков) имеет решение но его трудно понять, поскольку он ссылается на внешний блок кода.
Я имею дело с 2D-массивами, которые составляют пиксели букв:
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0
0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0
Желаемый результат здесь будет примерно таким:
[[4,0,6,17],[7,0,16,2],[7,7,15,9],[7,15,15,17]]
Где каждый массив содержит верхнюю левую координату и нижнюю правую координату (любой метод, который получает верхнюю левую и ширину и высоту, также работает).
Может ли кто-нибудь предоставить псевдокод (или Javascript) либо для ранее заданного вопроса, либо для другого работающего алгоритма, или предоставить более подробное объяснение необходимых шагов?